Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r69120 - in sandbox/SOC/2010/phoenix3: boost/phoenix boost/phoenix/bind boost/phoenix/bind/preprocessed boost/phoenix/core boost/phoenix/core/detail boost/phoenix/core/detail/preprocessed boost/phoenix/core/preprocessed boost/phoenix/function boost/phoenix/function/detail boost/phoenix/function/detail/preprocessed boost/phoenix/fusion boost/phoenix/object boost/phoenix/object/detail boost/phoenix/object/detail/preprocessed boost/phoenix/operator boost/phoenix/operator/detail boost/phoenix/operator/detail/preprocessed boost/phoenix/operator/preprocessed boost/phoenix/scope boost/phoenix/scope/detail boost/phoenix/scope/detail/preprocessed boost/phoenix/statement boost/phoenix/statement/detail boost/phoenix/statement/detail/preprocessed boost/phoenix/stl boost/phoenix/stl/algorithm boost/phoenix/stl/algorithm/detail boost/phoenix/stl/container boost/phoenix/stl/container/detail boost/phoenix/support boost/phoenix/support/detail boost/phoenix/support/preprocessor libs/phoenix/doc libs/phoenix/doc/examples libs/phoenix/doc/html libs/phoenix/doc/html/phoenix libs/phoenix/doc/html/phoenix/examples libs/phoenix/doc/html/phoenix/inside libs/phoenix/doc/html/phoenix/inside/expression libs/phoenix/doc/html/phoenix/modules libs/phoenix/doc/html/phoenix/modules/core libs/phoenix/doc/html/phoenix/modules/object libs/phoenix/doc/html/phoenix/modules/scope libs/phoenix/doc/html/phoenix/modules/stl libs/phoenix/doc/html/phoenix/starter_kit libs/phoenix/doc/inside libs/phoenix/doc/modules libs/phoenix/doc/reference libs/phoenix/doc/reference/concepts libs/phoenix/preprocess
From: thom.heller_at_[hidden]
Date: 2011-02-21 06:54:02


Author: theller
Date: 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
New Revision: 69120
URL: http://svn.boost.org/trac/boost/changeset/69120

Log:
further code cleanup: changed PHOENIX_ macros to BOOST_PHOENIX_ macros, regenerated preprocessed header
Added:
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/call.hpp (contents, props changed)
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/call_10.hpp (contents, props changed)
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/call_20.hpp (contents, props changed)
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/call_30.hpp (contents, props changed)
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/call_40.hpp (contents, props changed)
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/call_50.hpp (contents, props changed)
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/boost_phoenix_define_expression.html (contents, props changed)
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/boost_phoenix_define_expression_ext.html (contents, props changed)
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/boost_phoenix_define_expression_ext_vararg.html (contents, props changed)
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/boost_phoenix_define_expression_vararg.html (contents, props changed)
Removed:
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/mem_obj_ptr.hpp
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression.html
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_ext.html
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_ext_vararg.html
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_vararg.html
Text files modified:
   sandbox/SOC/2010/phoenix3/boost/phoenix/bind.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/bind/bind.hpp | 36
   sandbox/SOC/2010/phoenix3/boost/phoenix/bind/preprocessed/bind.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/core.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/actor.hpp | 18
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/argument.hpp | 12
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/arity.hpp | 13
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/call.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/actor_operator.hpp | 123 +-
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/actor_result_of.hpp | 40
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/call.hpp | 44
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/expression.hpp | 105 +-
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator_10.hpp | 340 ++---
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator_20.hpp | 760 ++++++--------
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator_30.hpp | 1180 ++++++++++-------------
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator_40.hpp | 1600 +++++++++++++------------------
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator_50.hpp | 2020 +++++++++++++++++----------------------
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of_10.hpp | 68
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of_20.hpp | 128 +-
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of_30.hpp | 188 +-
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of_40.hpp | 248 ++--
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of_50.hpp | 308 +++---
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/domain.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/environment.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/expression.hpp | 48
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/function_equal.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/is_actor.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/is_nullary.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/limits.hpp | 160 +-
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/meta_grammar.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/nothing.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/preprocessed/expression.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/reference.hpp | 12
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/terminal.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/terminal_fwd.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/value.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/visit_each.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/function.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/function/detail/function_operator.hpp | 40
   sandbox/SOC/2010/phoenix3/boost/phoenix/function/detail/function_result_of.hpp | 30
   sandbox/SOC/2010/phoenix3/boost/phoenix/function/detail/preprocessed/function_operator.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/function/detail/preprocessed/function_result_of.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/function/function.hpp | 20
   sandbox/SOC/2010/phoenix3/boost/phoenix/fusion.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/fusion/at.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/object.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/const_cast.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/construct.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/delete.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/construct.hpp | 38
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/construct_eval.hpp | 46
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/new.hpp | 38
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/new_eval.hpp | 56
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_10.hpp | 138 +
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_20.hpp | 278 ++++-
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_30.hpp | 418 ++++++-
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_40.hpp | 558 ++++++++--
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_50.hpp | 698 ++++++++++---
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_10.hpp | 117 +
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_20.hpp | 247 +++-
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_30.hpp | 377 +++++-
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_40.hpp | 507 +++++++--
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_50.hpp | 1043 ++++++++++++++++----
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/target.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/dynamic_cast.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/new.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/reinterpret_cast.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/static_cast.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/arithmetic.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/bitwise.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/comparision.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/define_operator.hpp | 30
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/mem_fun_ptr_eval_result_of.hpp | 31
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/mem_fun_ptr_gen.hpp | 74
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/undef_operator.hpp | 17
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/if_else.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/io.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/logical.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/member.hpp | 72
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_10.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_20.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_30.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_40.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_50.hpp | 1549 +++++++++++++++++-------------
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/self.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/phoenix.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/dynamic.hpp | 49
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/let_local_gen.hpp | 38
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/local_gen.hpp | 74
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/local_var_def.hpp | 59
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/make_locals.hpp | 107 +
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic_10.hpp | 20
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic_20.hpp | 40
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic_30.hpp | 60
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic_40.hpp | 80
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic_50.hpp | 100
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen_50.hpp | 15
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_10.hpp | 110 +
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_20.hpp | 220 +++-
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_30.hpp | 330 ++++-
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_40.hpp | 440 ++++++--
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_50.hpp | 1340 ++++++-------------------
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/dynamic.hpp | 40
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/lambda.hpp | 27
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/let.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/local_variable.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/scoped_environment.hpp | 47
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/this.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/catch_push_back.hpp | 52
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/catch_push_back.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_10.hpp | 393 +++---
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_20.hpp | 713 ++++++++-----
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_30.hpp | 1033 ++++++++++++-------
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_40.hpp | 1353 ++++++++++++++++---------
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_50.hpp | 1673 +++++++++++++++++++++-----------
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression_10.hpp | 165 ++
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression_20.hpp | 315 ++++-
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression_30.hpp | 465 +++++++-
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression_40.hpp | 1032 ++++++++++++++++++++
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression_50.hpp | 765 ++++++++++++---
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/switch.hpp | 62
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/try_catch_eval.hpp | 52
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/try_catch_expression.hpp | 43
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/do_while.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/for.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/if.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/sequence.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/switch.hpp | 10
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/throw.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/try_catch.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/while.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/begin.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/decay_array.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/end.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_equal_range.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_find.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_lower_bound.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_remove.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_remove_if.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_reverse.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_sort.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_unique.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_upper_bound.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/is_std_hash_map.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/is_std_hash_set.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/is_std_list.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/is_std_map.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/is_std_set.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/std_hash_map_fwd.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/std_hash_set_fwd.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/iteration.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/querying.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/transformation.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/container.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/container/container.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/stl/container/detail/container.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/support/detail/iterate.hpp | 58
   sandbox/SOC/2010/phoenix3/boost/phoenix/support/detail/iterate_define.hpp | 102 +-
   sandbox/SOC/2010/phoenix3/boost/phoenix/support/detail/iterate_undef.hpp | 44
   sandbox/SOC/2010/phoenix3/boost/phoenix/support/iterate.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/support/preprocessor/round.hpp | 12
   sandbox/SOC/2010/phoenix3/boost/phoenix/support/vector.hpp | 34
   sandbox/SOC/2010/phoenix3/boost/phoenix/version.hpp | 6
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/actor.qbk | 11
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/actors.qbk | 8
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/basics.qbk | 6
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/examples/adding.qbk | 2
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/index.html | 22
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix-doc_HTML.manifest | 8
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/actor.html | 12
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/basics.html | 16
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/examples/adding_an_expression.html | 2
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/examples/extending_actors.html | 8
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside.html | 8
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/actions.html | 8
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/actor.html | 26
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression.html | 18
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/arguments.html | 14
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/references.html | 4
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/values.html | 2
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/object/construction.html | 6
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/object/new.html | 6
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/operator.html | 12
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/scope/lambda.html | 2
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/scope/let.html | 8
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/stl/algorithm.html | 6
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/stl/container.html | 4
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/organization.html | 6
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit.html | 2
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/lazy_functions.html | 4
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/lazy_operators.html | 2
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/values.html | 4
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/actor.qbk | 8
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/expression.qbk | 30
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/modules/core.qbk | 4
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/modules/object.qbk | 6
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/modules/scope.qbk | 10
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference.qbk | 12
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/actor.qbk | 8
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/composite.qbk | 6
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts/actor.qbk | 6
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/core.qbk | 4
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/object.qbk | 6
   sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/scope.qbk | 10
   sandbox/SOC/2010/phoenix3/libs/phoenix/preprocess/wave.cfg | 9
   224 files changed, 15747 insertions(+), 10816 deletions(-)

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/bind.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/bind.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/bind.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -4,12 +4,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)
 ==============================================================================*/
-#ifndef PHOENIX_BIND_HPP
-#define PHOENIX_BIND_HPP
+#ifndef BOOST_PHOENIX_BIND_HPP
+#define BOOST_PHOENIX_BIND_HPP
 
 #include <boost/phoenix/version.hpp>
 #include <boost/phoenix/bind/bind.hpp>
-//#include <boost/phoenix/bind/bind_member_function.hpp>
-//#include <boost/phoenix/bind/bind_member_variable.hpp>
 
 #endif

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,7 +1,7 @@
 
-#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_BIND_BIND_HPP
-#define PHOENIX_BIND_BIND_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_BIND_BIND_HPP
+#define BOOST_PHOENIX_BIND_BIND_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/function.hpp>
@@ -13,18 +13,18 @@
 #endif
 #else
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_BIND_BIND_HPP
-#define PHOENIX_BIND_BIND_HPP
+#ifndef BOOST_PHOENIX_BIND_BIND_HPP
+#define BOOST_PHOENIX_BIND_BIND_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/function.hpp>
 #include <boost/phoenix/support/iterate.hpp>
 #include <boost/utility/result_of.hpp>
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/bind_" PHOENIX_LIMIT_STR ".hpp")
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/bind_" BOOST_PHOENIX_LIMIT_STR ".hpp")
 #endif
 /*==============================================================================
     Copyright (c) 2001-2010 Joel de Guzman
@@ -34,7 +34,7 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(preserve: 1)
 #endif
 
@@ -51,14 +51,14 @@
         return function<F>(f)();
     }
 
-#define PHOENIX_ITERATION_PARAMS \
- (3, (1, PHOENIX_ARG_LIMIT, \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (1, BOOST_PHOENIX_ARG_LIMIT, \
     <boost/phoenix/bind/bind.hpp>))
-#include PHOENIX_ITERATE()
+#include BOOST_PHOENIX_ITERATE()
 
 }}
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
@@ -66,13 +66,13 @@
 
 #else
     
- template <typename F, PHOENIX_typename_A>
- typename expression::function<F, PHOENIX_A>::type const
- bind(F f, PHOENIX_A_const_ref_a)
+ template <typename F, BOOST_PHOENIX_typename_A>
+ typename expression::function<F, BOOST_PHOENIX_A>::type const
+ bind(F f, BOOST_PHOENIX_A_const_ref_a)
     {
- return function<F>(f)(PHOENIX_a);
+ return function<F>(f)(BOOST_PHOENIX_a);
     }
 
 #endif
 
-#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/bind/preprocessed/bind.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/bind/preprocessed/bind.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/bind/preprocessed/bind.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,21 +5,21 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if !defined(PHOENIX_BIND_PREPROCESSED_BIND)
-#define PHOENIX_BIND_PREPROCESSED_BIND
+#if !defined(BOOST_PHOENIX_BIND_PREPROCESSED_BIND)
+#define BOOST_PHOENIX_BIND_PREPROCESSED_BIND
 
-#if PHOENIX_LIMIT <= 10
+#if BOOST_PHOENIX_LIMIT <= 10
 #include <boost/phoenix/bind/preprocessed/bind_10.hpp>
-#elif PHOENIX_LIMIT <= 20
+#elif BOOST_PHOENIX_LIMIT <= 20
 #include <boost/phoenix/bind/preprocessed/bind_20.hpp>
-#elif PHOENIX_LIMIT <= 30
+#elif BOOST_PHOENIX_LIMIT <= 30
 #include <boost/phoenix/bind/preprocessed/bind_30.hpp>
-#elif PHOENIX_LIMIT <= 40
+#elif BOOST_PHOENIX_LIMIT <= 40
 #include <boost/phoenix/bind/preprocessed/bind_40.hpp>
-#elif PHOENIX_LIMIT <= 50
+#elif BOOST_PHOENIX_LIMIT <= 50
 #include <boost/phoenix/bind/preprocessed/bind_50.hpp>
 #else
-#error "PHOENIX_LIMIT out of bounds for preprocessed headers"
+#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
 #endif
 
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -4,8 +4,8 @@
  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_HPP
-#define PHOENIX_CORE_HPP
+#ifndef BOOST_PHOENIX_CORE_HPP
+#define BOOST_PHOENIX_CORE_HPP
 
 #include <boost/phoenix/version.hpp>
 #include <boost/phoenix/core/limits.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/actor.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/actor.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/actor.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -6,8 +6,8 @@
     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_ACTOR_HPP
-#define PHOENIX_CORE_ACTOR_HPP
+#ifndef BOOST_PHOENIX_CORE_ACTOR_HPP
+#define BOOST_PHOENIX_CORE_ACTOR_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 
@@ -62,10 +62,10 @@
         };
 
 
- #define PHOENIX_ACTOR_ASSIGN_CHILD(Z, N, D) \
+ #define BOOST_PHOENIX_ACTOR_ASSIGN_CHILD(Z, N, D) \
         assign(proto::_child_c<N>, proto::_child_c<N>(proto::_state)) \
     /**/
- #define PHOENIX_ACTOR_ASSIGN_CALL(Z, N, D) \
+ #define BOOST_PHOENIX_ACTOR_ASSIGN_CALL(Z, N, D) \
             proto::when< \
                 proto::nary_expr<proto::_ , \
                   BOOST_PP_ENUM_PARAMS(N, proto::_ BOOST_PP_INTERCEPT) \
@@ -73,7 +73,7 @@
                , proto::and_< \
                   BOOST_PP_ENUM( \
                         N \
- , PHOENIX_ACTOR_ASSIGN_CHILD \
+ , BOOST_PHOENIX_ACTOR_ASSIGN_CHILD \
                       , _ \
                     ) \
> \
@@ -83,8 +83,8 @@
         struct assign
             : proto::or_<
                 BOOST_PP_ENUM_SHIFTED(
- PHOENIX_LIMIT
- , PHOENIX_ACTOR_ASSIGN_CALL
+ BOOST_PHOENIX_LIMIT
+ , BOOST_PHOENIX_ACTOR_ASSIGN_CALL
                   , _
                 )
               , proto::when<
@@ -93,8 +93,8 @@
>
>
         {};
- #undef PHOENIX_ACTOR_ASSIGN_CALL
- #undef PHOENIX_ACTOR_ASSIGN_CHILD
+ #undef BOOST_PHOENIX_ACTOR_ASSIGN_CALL
+ #undef BOOST_PHOENIX_ACTOR_ASSIGN_CHILD
     }
 
     // Bring in the result_of::actor<>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/argument.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/argument.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/argument.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -6,8 +6,8 @@
     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_ARGUMENT_HPP
-#define PHOENIX_CORE_ARGUMENT_HPP
+#ifndef BOOST_PHOENIX_CORE_ARGUMENT_HPP
+#define BOOST_PHOENIX_CORE_ARGUMENT_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/actor.hpp>
@@ -77,14 +77,14 @@
 
     namespace placeholders
     {
- BOOST_PP_REPEAT(PHOENIX_ARG_LIMIT, BOOST_PHOENIX_ARGUMENT_N, arg)
- BOOST_PP_REPEAT(PHOENIX_ARG_LIMIT, BOOST_PHOENIX_ARGUMENT_N, _)
+ BOOST_PP_REPEAT(BOOST_PHOENIX_ARG_LIMIT, BOOST_PHOENIX_ARGUMENT_N, arg)
+ BOOST_PP_REPEAT(BOOST_PHOENIX_ARG_LIMIT, BOOST_PHOENIX_ARGUMENT_N, _)
     }
 
     namespace arg_names
     {
- BOOST_PP_REPEAT(PHOENIX_ARG_LIMIT, BOOST_PHOENIX_ARGUMENT_N, arg)
- BOOST_PP_REPEAT(PHOENIX_ARG_LIMIT, BOOST_PHOENIX_ARGUMENT_N, _)
+ BOOST_PP_REPEAT(BOOST_PHOENIX_ARG_LIMIT, BOOST_PHOENIX_ARGUMENT_N, arg)
+ BOOST_PP_REPEAT(BOOST_PHOENIX_ARG_LIMIT, BOOST_PHOENIX_ARGUMENT_N, _)
     }
 
     #undef BOOST_PHOENIX_ARGUMENT_N

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/arity.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/arity.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/arity.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_ARITY_HPP
-#define PHOENIX_CORE_ARITY_HPP
+#ifndef BOOST_PHOENIX_CORE_ARITY_HPP
+#define BOOST_PHOENIX_CORE_ARITY_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/is_placeholder.hpp>
@@ -54,7 +54,14 @@
               , mpl::int_<0>
               , proto::make<mpl::max<
                     proto::_state
- , proto::call<evaluator(proto::_, proto::call<functional::context(_env, _actions)>)>
+ , proto::call<
+ evaluator(
+ proto::_
+ , proto::call<
+ functional::context(_env, _actions)
+ >
+ )
+ >
>()>
>
         {};

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/call.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/call.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/call.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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
+#ifndef BOOST_PHOENIX_CORE_CALL_HPP
+#define BOOST_PHOENIX_CORE_CALL_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/environment.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/actor_operator.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/actor_operator.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/actor_operator.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,25 +1,24 @@
 
-/*
-#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_CORE_DETAIL_ACTOR_OPERATOR_HPP
-#define PHOENIX_CORE_DETAIL_ACTOR_OPERATOR_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_CORE_DETAIL_ACTOR_OPERATOR_HPP
+#define BOOST_PHOENIX_CORE_DETAIL_ACTOR_OPERATOR_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
 #include <boost/phoenix/core/detail/preprocessed/actor_operator.hpp>
 
 #endif
-#else*/
+#else
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_CORE_DETAIL_ACTOR_OPERATOR_HPP
-#define PHOENIX_CORE_DETAIL_ACTOR_OPERATOR_HPP
+#ifndef BOOST_PHOENIX_CORE_DETAIL_ACTOR_OPERATOR_HPP
+#define BOOST_PHOENIX_CORE_DETAIL_ACTOR_OPERATOR_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/actor_operator_" PHOENIX_LIMIT_STR ".hpp")
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/actor_operator_" BOOST_PHOENIX_LIMIT_STR ".hpp")
 #endif
 /*==============================================================================
     Copyright (c) 2005-2010 Joel de Guzman
@@ -29,16 +28,16 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(preserve: 1)
 #endif
 
-#define PHOENIX_ITERATION_PARAMS \
- (3, (1, PHOENIX_ACTOR_LIMIT, \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (1, BOOST_PHOENIX_ACTOR_LIMIT, \
         <boost/phoenix/core/detail/actor_operator.hpp>))
-#include PHOENIX_ITERATE()
+#include BOOST_PHOENIX_ITERATE()
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
@@ -46,65 +45,65 @@
 
 #else
 
- template <typename This, PHOENIX_typename_A>
- struct result<This(PHOENIX_A)>
- : result_of::actor<Expr, PHOENIX_A>
+ template <typename This, BOOST_PHOENIX_typename_A>
+ struct result<This(BOOST_PHOENIX_A)>
+ : result_of::actor<Expr, BOOST_PHOENIX_A>
         {};
 
-#if PHOENIX_ITERATION >= PHOENIX_PERFECT_FORWARD_LIMIT
+#if BOOST_PHOENIX_ITERATION >= BOOST_PHOENIX_PERFECT_FORWARD_LIMIT
 
- template <PHOENIX_typename_A>
- typename result_of::actor<Expr, PHOENIX_A_ref>::type
- operator()(PHOENIX_A_ref_a)
+ template <BOOST_PHOENIX_typename_A>
+ typename result_of::actor<Expr, BOOST_PHOENIX_A_ref>::type
+ operator()(BOOST_PHOENIX_A_ref_a)
         {
             typedef
- BOOST_PP_CAT(vector, BOOST_PP_INC(PHOENIX_ITERATION))<
- const actor<Expr> *, PHOENIX_A_ref
+ BOOST_PP_CAT(vector, BOOST_PP_INC(BOOST_PHOENIX_ITERATION))<
+ const actor<Expr> *, BOOST_PHOENIX_A_ref
>
                 env_type;
- env_type env = {this, PHOENIX_a};
+ env_type env = {this, BOOST_PHOENIX_a};
             
             return eval(*this, context(env, default_actions()));
         }
 
- template <PHOENIX_typename_A>
- typename result_of::actor<Expr, PHOENIX_A_ref>::type
- operator()(PHOENIX_A_ref_a) const
+ template <BOOST_PHOENIX_typename_A>
+ typename result_of::actor<Expr, BOOST_PHOENIX_A_ref>::type
+ operator()(BOOST_PHOENIX_A_ref_a) const
         {
             typedef
- BOOST_PP_CAT(vector, BOOST_PP_INC(PHOENIX_ITERATION))<
- const actor<Expr> *, PHOENIX_A_ref
+ BOOST_PP_CAT(vector, BOOST_PP_INC(BOOST_PHOENIX_ITERATION))<
+ const actor<Expr> *, BOOST_PHOENIX_A_ref
>
                 env_type;
- env_type env = {this, PHOENIX_a};
+ env_type env = {this, BOOST_PHOENIX_a};
             
             return eval(*this, context(env, default_actions()));
         }
 
- template <PHOENIX_typename_A>
- typename result_of::actor<Expr, PHOENIX_A_const_ref>::type
- operator()(PHOENIX_A_const_ref_a)
+ template <BOOST_PHOENIX_typename_A>
+ typename result_of::actor<Expr, BOOST_PHOENIX_A_const_ref>::type
+ operator()(BOOST_PHOENIX_A_const_ref_a)
         {
             typedef
- BOOST_PP_CAT(vector, BOOST_PP_INC(PHOENIX_ITERATION))<
- const actor<Expr> *, PHOENIX_A_const_ref
+ BOOST_PP_CAT(vector, BOOST_PP_INC(BOOST_PHOENIX_ITERATION))<
+ const actor<Expr> *, BOOST_PHOENIX_A_const_ref
>
                 env_type;
- env_type env = {this, PHOENIX_a};
+ env_type env = {this, BOOST_PHOENIX_a};
             
             return eval(*this, context(env, default_actions()));
         }
 
- template <PHOENIX_typename_A>
- typename result_of::actor<Expr, PHOENIX_A_const_ref>::type
- operator()(PHOENIX_A_const_ref_a) const
+ template <BOOST_PHOENIX_typename_A>
+ typename result_of::actor<Expr, BOOST_PHOENIX_A_const_ref>::type
+ operator()(BOOST_PHOENIX_A_const_ref_a) const
         {
             typedef
- BOOST_PP_CAT(vector, BOOST_PP_INC(PHOENIX_ITERATION))<
- const actor<Expr> *, PHOENIX_A_const_ref
+ BOOST_PP_CAT(vector, BOOST_PP_INC(BOOST_PHOENIX_ITERATION))<
+ const actor<Expr> *, BOOST_PHOENIX_A_const_ref
>
                 env_type;
- env_type env = {this, PHOENIX_a};
+ env_type env = {this, BOOST_PHOENIX_a};
             
             return eval(*this, context(env, default_actions()));
         }
@@ -112,48 +111,48 @@
 #else
 
 // We need to define operator() for all permutations of reference types.
-// For PHOENIX_ITERATION <= PHOENIX_LIMIT_PREFECT_FORWARD
-// 2^PHOENIX_ITERATION overloads are created
+// For BOOST_PHOENIX_ITERATION <= BOOST_PHOENIX_LIMIT_PREFECT_FORWARD
+// 2^BOOST_PHOENIX_ITERATION overloads are created
 // For compile time reasons,
-// if PHOENIX_ITERATION > PHOENIX_LIMIT_PERFECT_FORWARD
+// if BOOST_PHOENIX_ITERATION > BOOST_PHOENIX_LIMIT_PERFECT_FORWARD
 // only operator()(A const &...a) and operator()(A &...a) are generated
 // this is all handled by the PP mumbo jumbo above
-#define PHOENIX_ACTOR_OPERATOR(_, I, __) \
- template <PHOENIX_typename_A> \
- typename result_of::actor<Expr, PHOENIX_PERM_A(I)>::type \
- operator()(PHOENIX_PERM_A_a(I)) const \
+#define BOOST_PHOENIX_ACTOR_OPERATOR(_, I, __) \
+ template <BOOST_PHOENIX_typename_A> \
+ typename result_of::actor<Expr, BOOST_PHOENIX_PERM_A(I)>::type \
+ operator()(BOOST_PHOENIX_PERM_A_a(I)) const \
         { \
             typedef \
- BOOST_PP_CAT(vector, BOOST_PP_INC(PHOENIX_ITERATION))< \
- const actor<Expr> *, PHOENIX_PERM_A(I) \
+ BOOST_PP_CAT(vector, BOOST_PP_INC(BOOST_PHOENIX_ITERATION))< \
+ const actor<Expr> *, BOOST_PHOENIX_PERM_A(I) \
> \
                 env_type; \
- env_type env = {this, PHOENIX_a}; \
+ env_type env = {this, BOOST_PHOENIX_a}; \
                                                                                 \
             return eval(*this, context(env, default_actions())); \
         } \
                                                                                 \
- template <PHOENIX_typename_A> \
- typename result_of::actor<Expr, PHOENIX_PERM_A(I)>::type \
- operator()(PHOENIX_PERM_A_a(I)) \
+ template <BOOST_PHOENIX_typename_A> \
+ typename result_of::actor<Expr, BOOST_PHOENIX_PERM_A(I)>::type \
+ operator()(BOOST_PHOENIX_PERM_A_a(I)) \
         { \
             typedef \
- BOOST_PP_CAT(vector, BOOST_PP_INC(PHOENIX_ITERATION))< \
- const actor<Expr> *, PHOENIX_PERM_A(I) \
+ BOOST_PP_CAT(vector, BOOST_PP_INC(BOOST_PHOENIX_ITERATION))< \
+ const actor<Expr> *, BOOST_PHOENIX_PERM_A(I) \
> \
                 env_type; \
- env_type env = {this, PHOENIX_a}; \
+ env_type env = {this, BOOST_PHOENIX_a}; \
                                                                                 \
             return eval(*this, context(env, default_actions())); \
         } \
         /**/
 
- BOOST_PP_REPEAT( PHOENIX_PERM_SIZE, PHOENIX_ACTOR_OPERATOR, _)
+ BOOST_PP_REPEAT(BOOST_PHOENIX_PERM_SIZE, BOOST_PHOENIX_ACTOR_OPERATOR, _)
 
-#undef PHOENIX_ACTOR_OPERATOR
+#undef BOOST_PHOENIX_ACTOR_OPERATOR
 
 #endif
 
 #endif
 
-//#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/actor_result_of.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/actor_result_of.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/actor_result_of.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,8 +1,7 @@
 
-/*
-#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_CORE_DETAIL_ACTOR_RESULT_OF_HPP
-#define PHOENIX_CORE_DETAIL_ACTOR_RESULT_OF_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_CORE_DETAIL_ACTOR_RESULT_OF_HPP
+#define BOOST_PHOENIX_CORE_DETAIL_ACTOR_RESULT_OF_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
@@ -10,17 +9,16 @@
 
 #endif
 #else
-*/
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_CORE_DETAIL_ACTOR_RESULT_OF_HPP
-#define PHOENIX_CORE_DETAIL_ACTOR_RESULT_OF_HPP
+#ifndef BOOST_PHOENIX_CORE_DETAIL_ACTOR_RESULT_OF_HPP
+#define BOOST_PHOENIX_CORE_DETAIL_ACTOR_RESULT_OF_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/actor_result_of_" PHOENIX_LIMIT_STR ".hpp")
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/actor_result_of_" BOOST_PHOENIX_LIMIT_STR ".hpp")
 #endif
 
 /*==============================================================================
@@ -31,14 +29,14 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(preserve: 1)
 #endif
 
     namespace result_of
     {
         template <typename Expr
- , PHOENIX_typename_A_void(PHOENIX_ACTOR_LIMIT)
+ , BOOST_PHOENIX_typename_A_void(BOOST_PHOENIX_ACTOR_LIMIT)
             , typename Dummy = void>
         struct actor;
 
@@ -70,14 +68,14 @@
             type;
         };
 
-#define PHOENIX_ITERATION_PARAMS \
- (3, (1, PHOENIX_ACTOR_LIMIT, \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (1, BOOST_PHOENIX_ACTOR_LIMIT, \
     <boost/phoenix/core/detail/actor_result_of.hpp>))
-#include PHOENIX_ITERATE()
+#include BOOST_PHOENIX_ITERATE()
 
     }
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
@@ -85,8 +83,8 @@
 
 #else
 
- template <typename Expr, PHOENIX_typename_A>
- struct actor<Expr, PHOENIX_A>
+ template <typename Expr, BOOST_PHOENIX_typename_A>
+ struct actor<Expr, BOOST_PHOENIX_A>
         {
             typedef
                 typename phoenix::evaluator::
@@ -95,8 +93,8 @@
                       , vector2<
                             BOOST_PP_CAT(
                                 vector
- , BOOST_PP_INC(PHOENIX_ITERATION)
- )<const ::boost::phoenix::actor<Expr> *, PHOENIX_A> &
+ , BOOST_PP_INC(BOOST_PHOENIX_ITERATION)
+ )<const ::boost::phoenix::actor<Expr> *, BOOST_PHOENIX_A> &
                           , default_actions
> const &
                       , int
@@ -106,4 +104,4 @@
 
 #endif
 
-//#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/call.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/call.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/call.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,19 +1,20 @@
 
-/*
-#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_CORE_DETAIL_CALL_HPP
-#define PHOENIX_CORE_DETAIL_CALL_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_CORE_DETAIL_CALL_HPP
+#define BOOST_PHOENIX_CORE_DETAIL_CALL_HPP
+
+#include <boost/phoenix/core/detail/preprocessed/call.hpp>
 
 #endif
 #else
-*/
-#if !PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_CORE_DETAIL_CALL_HPP
-#define PHOENIX_CORE_DETAIL_CALL_HPP
+#if !BOOST_PHOENIX_IS_ITERATING
+
+#ifndef BOOST_PHOENIX_CORE_DETAIL_CALL_HPP
+#define BOOST_PHOENIX_CORE_DETAIL_CALL_HPP
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/call_" PHOENIX_LIMIT_STR ".hpp")
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/call_" BOOST_PHOENIX_LIMIT_STR ".hpp")
 #endif
 
 /*==============================================================================
@@ -26,7 +27,7 @@
 
 #include <boost/phoenix/support/iterate.hpp>
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(preserve: 1)
 #endif
 
@@ -42,16 +43,16 @@
 
     namespace detail
     {
-#define PHOENIX_ITERATION_PARAMS \
- (3, (1, PHOENIX_LIMIT, \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (1, BOOST_PHOENIX_LIMIT, \
     <boost/phoenix/core/detail/call.hpp>))
-#include PHOENIX_ITERATE()
+#include BOOST_PHOENIX_ITERATE()
     }
 
 #undef M0
 #undef M1
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
@@ -60,17 +61,19 @@
 #else
         
         template <typename Fun, typename Expr, typename State, typename Data>
- struct call_impl<Fun, Expr, State, Data, PHOENIX_ITERATION>
+ struct call_impl<Fun, Expr, State, Data, BOOST_PHOENIX_ITERATION>
             : proto::transform_impl<Expr, State, Data>
         {
             typedef
                 typename boost::phoenix::result_of::context<State, Data>::type
                 context_type;
 
- BOOST_PP_REPEAT(PHOENIX_ITERATION, M0, _)
+ BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, M0, _)
 
             typedef
- typename boost::result_of<Fun(context_type, PHOENIX_A)>::type
+ typename boost::result_of<
+ Fun(context_type, BOOST_PHOENIX_A)
+ >::type
                 result_type;
 
             result_type operator()(
@@ -79,10 +82,11 @@
               , typename call_impl::data_param d
             ) const
             {
- return Fun()(boost::phoenix::context(s, d) BOOST_PP_REPEAT(PHOENIX_ITERATION, M1, _));
+ return Fun()(boost::phoenix::context(s, d)
+ BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, M1, _));
             }
         };
 
 #endif
 
-//#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif // BOOST_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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#ifndef PHOENIX_CORE_DETAIL_EXPRESSION_HPP
-#define PHOENIX_CORE_DETAIL_EXPRESSION_HPP
+#ifndef BOOST_PHOENIX_CORE_DETAIL_EXPRESSION_HPP
+#define BOOST_PHOENIX_CORE_DETAIL_EXPRESSION_HPP
 
 #include <boost/preprocessor/empty.hpp>
 #include <boost/preprocessor/arithmetic/add.hpp>
@@ -22,58 +22,61 @@
 #include <boost/preprocessor/enum_params.hpp>
 #include <boost/preprocessor/repeat_from_to.hpp>
 
-#define PHOENIX_DEFINE_EXPRESSION(NAME_SEQ, SEQ) \
- PHOENIX_DEFINE_EXPRESSION_BASE( \
+#define BOOST_PHOENIX_DEFINE_EXPRESSION(NAME_SEQ, SEQ) \
+ BOOST_PHOENIX_DEFINE_EXPRESSION_BASE( \
         NAME_SEQ \
       , SEQ \
- , PHOENIX_DEFINE_EXPRESSION_EXPRESSION_DEFAULT \
- , PHOENIX_DEFINE_EXPRESSION_RULE_DEFAULT \
+ , BOOST_PHOENIX_DEFINE_EXPRESSION_EXPRESSION_DEFAULT \
+ , BOOST_PHOENIX_DEFINE_EXPRESSION_RULE_DEFAULT \
       , _ \
     ) \
 /**/
 
-#define PHOENIX_DEFINE_EXPRESSION_VARARG(NAME_SEQ, GRAMMAR_SEQ, LIMIT) \
- PHOENIX_DEFINE_EXPRESSION_BASE( \
+#define BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG(NAME_SEQ, GRAMMAR_SEQ, LIMIT) \
+ BOOST_PHOENIX_DEFINE_EXPRESSION_BASE( \
         NAME_SEQ \
       , GRAMMAR_SEQ \
- , PHOENIX_DEFINE_EXPRESSION_EXPRESSION_VARARG \
- , PHOENIX_DEFINE_EXPRESSION_RULE_VARARG \
+ , BOOST_PHOENIX_DEFINE_EXPRESSION_EXPRESSION_VARARG \
+ , BOOST_PHOENIX_DEFINE_EXPRESSION_RULE_VARARG \
       , LIMIT \
     ) \
 /**/
 
-#define PHOENIX_DEFINE_EXPRESSION_EXT(ACTOR, NAME_SEQ, GRAMMAR_SEQ) \
- PHOENIX_DEFINE_EXPRESSION_BASE( \
+#define BOOST_PHOENIX_DEFINE_EXPRESSION_EXT(ACTOR, NAME_SEQ, GRAMMAR_SEQ) \
+ BOOST_PHOENIX_DEFINE_EXPRESSION_BASE( \
         NAME_SEQ \
       , GRAMMAR_SEQ \
- , PHOENIX_DEFINE_EXPRESSION_EXPRESSION_EXT \
- , PHOENIX_DEFINE_EXPRESSION_RULE_VARARG \
+ , BOOST_PHOENIX_DEFINE_EXPRESSION_EXPRESSION_EXT \
+ , BOOST_PHOENIX_DEFINE_EXPRESSION_RULE_VARARG \
       , ACTOR \
     ) \
 /**/
 
-#define PHOENIX_DEFINE_EXPRESSION_EXT_VARARG(ACTOR, NAME, GRAMMAR, LIMIT) \
- PHOENIX_DEFINE_EXPRESSION_BASE( \
+#define BOOST_PHOENIX_DEFINE_EXPRESSION_EXT_VARARG(ACTOR, NAME, GRAMMAR, LIMIT) \
+ BOOST_PHOENIX_DEFINE_EXPRESSION_BASE( \
         NAME_SEQ \
       , GRAMMAR_SEQ \
- , PHOENIX_DEFINE_EXPRESSION_EXPRESSION_VARARG_EXT \
- , PHOENIX_DEFINE_EXPRESSION_RULE_VARARG \
+ , BOOST_PHOENIX_DEFINE_EXPRESSION_EXPRESSION_VARARG_EXT \
+ , BOOST_PHOENIX_DEFINE_EXPRESSION_RULE_VARARG \
       , ACTOR \
     ) \
 /**/
 
-#define PHOENIX_DEFINE_EXPRESSION_NAMESPACE(R, D, E) \
-namespace E {
+#define BOOST_PHOENIX_DEFINE_EXPRESSION_NAMESPACE(R, D, E) \
+namespace E { \
+/**/
 
-#define PHOENIX_DEFINE_EXPRESSION_NAMESPACE_END(R, D, E) \
-}
+#define BOOST_PHOENIX_DEFINE_EXPRESSION_NAMESPACE_END(R, D, E) \
+} \
+/**/
 
-#define PHOENIX_DEFINE_EXPRESSION_NS(R, D, E) \
-E ::
+#define BOOST_PHOENIX_DEFINE_EXPRESSION_NS(R, D, E) \
+E :: \
+/**/
 
-#define PHOENIX_DEFINE_EXPRESSION_BASE(NAME_SEQ, GRAMMAR_SEQ, EXPRESSION, RULE, DATA) \
+#define BOOST_PHOENIX_DEFINE_EXPRESSION_BASE(NAME_SEQ, GRAMMAR_SEQ, EXPRESSION, RULE, DATA) \
 BOOST_PP_SEQ_FOR_EACH( \
- PHOENIX_DEFINE_EXPRESSION_NAMESPACE \
+ BOOST_PHOENIX_DEFINE_EXPRESSION_NAMESPACE \
   , _ \
   , BOOST_PP_SEQ_POP_BACK(NAME_SEQ) \
 ) \
@@ -90,7 +93,7 @@
         RULE(NAME_SEQ, GRAMMAR_SEQ, DATA) \
     } \
 BOOST_PP_SEQ_FOR_EACH( \
- PHOENIX_DEFINE_EXPRESSION_NAMESPACE_END \
+ BOOST_PHOENIX_DEFINE_EXPRESSION_NAMESPACE_END \
   , _ \
   , BOOST_PP_SEQ_POP_BACK(NAME_SEQ) \
 ) \
@@ -99,7 +102,7 @@
     template <typename Dummy> \
     struct meta_grammar::case_< \
         BOOST_PP_SEQ_FOR_EACH( \
- PHOENIX_DEFINE_EXPRESSION_NS \
+ BOOST_PHOENIX_DEFINE_EXPRESSION_NS \
           , _ \
           , BOOST_PP_SEQ_POP_BACK(NAME_SEQ) \
         ) tag:: BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(NAME_SEQ)) \
@@ -107,7 +110,7 @@
> \
         : enable_rule< \
             BOOST_PP_SEQ_FOR_EACH( \
- PHOENIX_DEFINE_EXPRESSION_NS \
+ BOOST_PHOENIX_DEFINE_EXPRESSION_NS \
               , _ \
               , BOOST_PP_SEQ_POP_BACK(NAME_SEQ) \
             ) rule:: BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(NAME_SEQ)) \
@@ -117,8 +120,8 @@
 } } \
 /**/
 
-#define PHOENIX_DEFINE_EXPRESSION_EXPRESSION_DEFAULT(NAME_SEQ, GRAMMAR_SEQ, D) \
- template <PHOENIX_typename_A(BOOST_PP_SEQ_SIZE(GRAMMAR_SEQ))> \
+#define BOOST_PHOENIX_DEFINE_EXPRESSION_EXPRESSION_DEFAULT(NAME_SEQ, GRAMMAR_SEQ, D) \
+ template <BOOST_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)) \
@@ -126,16 +129,16 @@
         {}; \
 /**/
         
-#define PHOENIX_DEFINE_EXPRESSION_RULE_DEFAULT(NAME_SEQ, GRAMMAR_SEQ, D) \
+#define BOOST_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) \
+#define BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG_R(_, N, NAME) \
     template < \
- PHOENIX_typename_A( \
+ BOOST_PHOENIX_typename_A( \
             BOOST_PP_ADD( \
                 N \
               , BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(2, 1, NAME)) \
@@ -143,13 +146,13 @@
         ) \
> \
     struct BOOST_PP_TUPLE_ELEM(2, 0, NAME)< \
- PHOENIX_A( \
+ BOOST_PHOENIX_A( \
             BOOST_PP_ADD(N, BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(2, 1, NAME))) \
         ) \
> \
         : expr< \
             tag:: BOOST_PP_TUPLE_ELEM(2, 0, NAME) \
- , PHOENIX_A( \
+ , BOOST_PHOENIX_A( \
                 BOOST_PP_ADD( \
                     N \
                   , BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(2, 1, NAME)) \
@@ -159,9 +162,9 @@
     {}; \
 /**/
 
-#define PHOENIX_DEFINE_EXPRESSION_EXPRESSION_VARARG(NAME_SEQ, GRAMMAR_SEQ, LIMIT)\
+#define BOOST_PHOENIX_DEFINE_EXPRESSION_EXPRESSION_VARARG(NAME_SEQ, GRAMMAR_SEQ, LIMIT) \
         template < \
- PHOENIX_typename_A_void( \
+ BOOST_PHOENIX_typename_A_void( \
                 BOOST_PP_ADD( \
                     LIMIT, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(GRAMMAR_SEQ))) \
             ) \
@@ -172,7 +175,7 @@
         BOOST_PP_REPEAT_FROM_TO( \
             1 \
           , BOOST_PP_ADD(LIMIT, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(GRAMMAR_SEQ))) \
- , PHOENIX_DEFINE_EXPRESSION_VARARG_R \
+ , BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG_R \
           , ( \
                 BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(NAME_SEQ)) \
               , BOOST_PP_SEQ_POP_BACK(GRAMMAR_SEQ) \
@@ -180,7 +183,7 @@
         ) \
 /**/
 
-#define PHOENIX_DEFINE_EXPRESSION_RULE_VARARG(NAME_SEQ, GRAMMAR_SEQ, LIMIT) \
+#define BOOST_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( \
@@ -199,19 +202,19 @@
         {}; \
 /**/
 
-#define PHOENIX_DEFINE_EXPRESSION_EXPRESSION_EXT(NAME_SEQ, GRAMMAR_SEQ, ACTOR) \
- template <PHOENIX_typename_A(BOOST_PP_SEQ_SIZE(GRAMMAR_SEQ))> \
+#define BOOST_PHOENIX_DEFINE_EXPRESSION_EXPRESSION_EXT(NAME_SEQ, GRAMMAR_SEQ, ACTOR) \
+ template <BOOST_PHOENIX_typename_A(BOOST_PP_SEQ_SIZE(GRAMMAR_SEQ))> \
         struct BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(NAME_SEQ)) \
             : expr_ext< \
                 ACTOR \
               , tag:: BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(NAME_SEQ)) \
- , PHOENIX_A(BOOST_PP_SEQ_SIZE(GRAMMAR_SEQ))> \
+ , BOOST_PHOENIX_A(BOOST_PP_SEQ_SIZE(GRAMMAR_SEQ))> \
         {}; \
 /**/
 
-#define PHOENIX_DEFINE_EXPRESSION_EXT_VARARG_R(_, N, NAME) \
+#define BOOST_PHOENIX_DEFINE_EXPRESSION_EXT_VARARG_R(_, N, NAME) \
     template < \
- PHOENIX_typename_A( \
+ BOOST_PHOENIX_typename_A( \
             BOOST_PP_ADD( \
                 N \
               , BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(3, 1, NAME)) \
@@ -219,14 +222,14 @@
         ) \
> \
     struct BOOST_PP_TUPLE_ELEM(3, 0, NAME)< \
- PHOENIX_A( \
+ BOOST_PHOENIX_A( \
             BOOST_PP_ADD(N, BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(3, 1, NAME))) \
         ) \
> \
         : expr_ext< \
             BOOST_PP_TUPLE_ELEM(3, 2, NAME) \
           , tag:: BOOST_PP_TUPLE_ELEM(3, 0, NAME) \
- , PHOENIX_A( \
+ , BOOST_PHOENIX_A( \
                 BOOST_PP_ADD( \
                     N \
                   , BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(3, 1, NAME)) \
@@ -236,9 +239,9 @@
     {}; \
 /**/
 
-#define PHOENIX_DEFINE_EXPRESSION_EXRPESSION_VARARG_EXT(N, G, D) \
+#define BOOST_PHOENIX_DEFINE_EXPRESSION_EXRPESSION_VARARG_EXT(N, G, D) \
         template < \
- PHOENIX_typename_A_void( \
+ BOOST_PHOENIX_typename_A_void( \
                 BOOST_PP_ADD(LIMIT, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(G))) \
             ) \
           , typename Dummy = void \
@@ -248,7 +251,7 @@
         BOOST_PP_REPEAT_FROM_TO( \
             1 \
           , BOOST_PP_ADD(LIMIT, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(G))) \
- , PHOENIX_DEFINE_EXPRESSION_EXT_VARARG_R \
+ , BOOST_PHOENIX_DEFINE_EXPRESSION_EXT_VARARG_R \
           , ( \
               BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(N)) \
             , BOOST_PP_SEQ_POP_BACK(G) \
@@ -257,7 +260,7 @@
         ) \
 /**/
 
-#define PHOENIX_DEFINE_EXPRESSION_RULE_VARARG_EXT(N, GRAMMAR, D) \
+#define BOOST_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( \

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,21 +5,21 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if !defined(PHOENIX_PREPROCESSED_ACTOR_OPERATOR)
-#define PHOENIX_PREPROCESSED_ACTOR_OPERATOR
+#if !defined(BOOST_PHOENIX_PREPROCESSED_ACTOR_OPERATOR)
+#define BOOST_PHOENIX_PREPROCESSED_ACTOR_OPERATOR
 
-#if PHOENIX_LIMIT <= 10
+#if BOOST_PHOENIX_LIMIT <= 10
 #include <boost/phoenix/core/detail/preprocessed/actor_operator_10.hpp>
-#elif PHOENIX_LIMIT <= 20
+#elif BOOST_PHOENIX_LIMIT <= 20
 #include <boost/phoenix/core/detail/preprocessed/actor_operator_20.hpp>
-#elif PHOENIX_LIMIT <= 30
+#elif BOOST_PHOENIX_LIMIT <= 30
 #include <boost/phoenix/core/detail/preprocessed/actor_operator_30.hpp>
-#elif PHOENIX_LIMIT <= 40
+#elif BOOST_PHOENIX_LIMIT <= 40
 #include <boost/phoenix/core/detail/preprocessed/actor_operator_40.hpp>
-#elif PHOENIX_LIMIT <= 50
+#elif BOOST_PHOENIX_LIMIT <= 50
 #include <boost/phoenix/core/detail/preprocessed/actor_operator_50.hpp>
 #else
-#error "PHOENIX_LIMIT out of bounds for preprocessed headers"
+#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
 #endif
 
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator_10.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator_10.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator_10.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -16,7 +16,7 @@
         struct result<This(A0)>
             : result_of::actor<Expr, A0>
         {};
- template <typename A0> typename result_of::actor<Expr, A0 &>::type operator()(A0 & a0) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 &>::type args_type; args_type args(this, a0); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0> typename result_of::actor<Expr, A0 &>::type operator()(A0 & a0) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 &>::type args_type; args_type args(this, a0); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0> typename result_of::actor<Expr, A0 const&>::type operator()(A0 const& a0) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 const&>::type args_type; args_type args(this, a0); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0> typename result_of::actor<Expr,
A0 const&>::type operator()(A0 const& a0) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 const&>::type args_type; args_type args(this, a0); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); }
+ template <typename A0> typename result_of::actor<Expr, A0 &>::type operator()(A0 & a0) const { typedef vector2< const actor<Expr> *, A0 & > env_type; env_type env = {this, a0}; return eval(*this, context(env, default_actions())); } template <typename A0> typename result_of::actor<Expr, A0 &>::type operator()(A0 & a0) { typedef vector2< const actor<Expr> *, A0 & > env_type; env_type env = {this, a0}; return eval(*this, context(env, default_actions())); } template <typename A0> typename result_of::actor<Expr, A0 const&>::type operator()(A0 const& a0) const { typedef vector2< const actor<Expr> *, A0 const& > env_type; env_type env = {this, a0}; return eval(*this, context(env, default_actions())); } template <typename A0> typename result_of::actor<Expr, A0 const&>::type operator()(A0 const& a0) { typedef vector2< const actor<Expr> *, A0 const& > env_type; env_type env = {this, a0}; return eval(*this, context(env, default_actions())); }
     
     
     
@@ -28,7 +28,7 @@
         struct result<This(A0 , A1)>
             : result_of::actor<Expr, A0 , A1>
         {};
- template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 & , A1 &>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 & , A1 &>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 & , A1 const&>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, d
efault_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 & , A1 const&>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 const& , A1 &>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 const
& , A1 &>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 const& , A1 const&>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 const& , A1 const&>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); }
+ template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) const { typedef vector3< const actor<Expr> *, A0 & , A1 & > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) { typedef vector3< const actor<Expr> *, A0 & , A1 & > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) const { typedef vector3< const actor<Expr> *, A0 & , A1 const& > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) { typedef vector3< const actor<Expr> *, A0 & , A1 co
nst& > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) const { typedef vector3< const actor<Expr> *, A0 const& , A1 & > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) { typedef vector3< const actor<Expr> *, A0 const& , A1 & > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) const { typedef vector3< const actor<Expr> *, A0 const& , A1 const& > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typ
ename result_of::actor<Expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) { typedef vector3< const actor<Expr> *, A0 const& , A1 const& > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); }
     
     
     
@@ -45,58 +45,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2)
         {
             typedef
- fusion::vector4<
+ vector4<
                     const actor<Expr> *, A0 & , A1 & , A2 &
>
- args_type;
- args_type args(this, a0 , a1 , a2);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2>
         typename result_of::actor<Expr, A0 & , A1 & , A2 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2) const
         {
             typedef
- fusion::vector4<
+ vector4<
                     const actor<Expr> *, A0 & , A1 & , A2 &
>
- args_type;
- args_type args(this, a0 , a1 , a2);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2)
         {
             typedef
- fusion::vector4<
+ vector4<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
             typedef
- fusion::vector4<
+ vector4<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -114,58 +108,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3)
         {
             typedef
- fusion::vector5<
+ vector5<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3) const
         {
             typedef
- fusion::vector5<
+ vector5<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3)
         {
             typedef
- fusion::vector5<
+ vector5<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
             typedef
- fusion::vector5<
+ vector5<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -183,58 +171,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4)
         {
             typedef
- fusion::vector6<
+ vector6<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4) const
         {
             typedef
- fusion::vector6<
+ vector6<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4)
         {
             typedef
- fusion::vector6<
+ vector6<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
             typedef
- fusion::vector6<
+ vector6<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -252,58 +234,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5)
         {
             typedef
- fusion::vector7<
+ vector7<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5) const
         {
             typedef
- fusion::vector7<
+ vector7<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5)
         {
             typedef
- fusion::vector7<
+ vector7<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
             typedef
- fusion::vector7<
+ vector7<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -321,58 +297,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6)
         {
             typedef
- fusion::vector8<
+ vector8<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6) const
         {
             typedef
- fusion::vector8<
+ vector8<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6)
         {
             typedef
- fusion::vector8<
+ vector8<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
             typedef
- fusion::vector8<
+ vector8<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -390,58 +360,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7)
         {
             typedef
- fusion::vector9<
+ vector9<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7) const
         {
             typedef
- fusion::vector9<
+ vector9<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7)
         {
             typedef
- fusion::vector9<
+ vector9<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&>::type
         operator()(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
         {
             typedef
- fusion::vector9<
+ vector9<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -459,58 +423,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8)
         {
             typedef
- fusion::vector10<
+ vector10<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8) const
         {
             typedef
- fusion::vector10<
+ vector10<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&>::type
         operator()(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)
         {
             typedef
- fusion::vector10<
+ vector10<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&>::type
         operator()(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
         {
             typedef
- fusion::vector10<
+ vector10<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -528,56 +486,50 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9)
         {
             typedef
- fusion::vector11<
+ vector11<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9) const
         {
             typedef
- fusion::vector11<
+ vector11<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&>::type
         operator()(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)
         {
             typedef
- fusion::vector11<
+ vector11<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&>::type
         operator()(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
         {
             typedef
- fusion::vector11<
+ vector11<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
+
+ return eval(*this, context(env, default_actions()));
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator_20.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator_20.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator_20.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -16,7 +16,7 @@
         struct result<This(A0)>
             : result_of::actor<Expr, A0>
         {};
- template <typename A0> typename result_of::actor<Expr, A0 &>::type operator()(A0 & a0) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 &>::type args_type; args_type args(this, a0); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0> typename result_of::actor<Expr, A0 &>::type operator()(A0 & a0) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 &>::type args_type; args_type args(this, a0); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0> typename result_of::actor<Expr, A0 const&>::type operator()(A0 const& a0) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 const&>::type args_type; args_type args(this, a0); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0> typename result_of::actor<Expr,
A0 const&>::type operator()(A0 const& a0) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 const&>::type args_type; args_type args(this, a0); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); }
+ template <typename A0> typename result_of::actor<Expr, A0 &>::type operator()(A0 & a0) const { typedef vector2< const actor<Expr> *, A0 & > env_type; env_type env = {this, a0}; return eval(*this, context(env, default_actions())); } template <typename A0> typename result_of::actor<Expr, A0 &>::type operator()(A0 & a0) { typedef vector2< const actor<Expr> *, A0 & > env_type; env_type env = {this, a0}; return eval(*this, context(env, default_actions())); } template <typename A0> typename result_of::actor<Expr, A0 const&>::type operator()(A0 const& a0) const { typedef vector2< const actor<Expr> *, A0 const& > env_type; env_type env = {this, a0}; return eval(*this, context(env, default_actions())); } template <typename A0> typename result_of::actor<Expr, A0 const&>::type operator()(A0 const& a0) { typedef vector2< const actor<Expr> *, A0 const& > env_type; env_type env = {this, a0}; return eval(*this, context(env, default_actions())); }
     
     
     
@@ -28,7 +28,7 @@
         struct result<This(A0 , A1)>
             : result_of::actor<Expr, A0 , A1>
         {};
- template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 & , A1 &>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 & , A1 &>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 & , A1 const&>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, d
efault_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 & , A1 const&>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 const& , A1 &>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 const
& , A1 &>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 const& , A1 const&>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 const& , A1 const&>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); }
+ template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) const { typedef vector3< const actor<Expr> *, A0 & , A1 & > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) { typedef vector3< const actor<Expr> *, A0 & , A1 & > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) const { typedef vector3< const actor<Expr> *, A0 & , A1 const& > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) { typedef vector3< const actor<Expr> *, A0 & , A1 co
nst& > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) const { typedef vector3< const actor<Expr> *, A0 const& , A1 & > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) { typedef vector3< const actor<Expr> *, A0 const& , A1 & > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) const { typedef vector3< const actor<Expr> *, A0 const& , A1 const& > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typ
ename result_of::actor<Expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) { typedef vector3< const actor<Expr> *, A0 const& , A1 const& > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); }
     
     
     
@@ -45,58 +45,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2)
         {
             typedef
- fusion::vector4<
+ vector4<
                     const actor<Expr> *, A0 & , A1 & , A2 &
>
- args_type;
- args_type args(this, a0 , a1 , a2);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2>
         typename result_of::actor<Expr, A0 & , A1 & , A2 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2) const
         {
             typedef
- fusion::vector4<
+ vector4<
                     const actor<Expr> *, A0 & , A1 & , A2 &
>
- args_type;
- args_type args(this, a0 , a1 , a2);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2)
         {
             typedef
- fusion::vector4<
+ vector4<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
             typedef
- fusion::vector4<
+ vector4<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -114,58 +108,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3)
         {
             typedef
- fusion::vector5<
+ vector5<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3) const
         {
             typedef
- fusion::vector5<
+ vector5<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3)
         {
             typedef
- fusion::vector5<
+ vector5<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
             typedef
- fusion::vector5<
+ vector5<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -183,58 +171,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4)
         {
             typedef
- fusion::vector6<
+ vector6<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4) const
         {
             typedef
- fusion::vector6<
+ vector6<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4)
         {
             typedef
- fusion::vector6<
+ vector6<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
             typedef
- fusion::vector6<
+ vector6<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -252,58 +234,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5)
         {
             typedef
- fusion::vector7<
+ vector7<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5) const
         {
             typedef
- fusion::vector7<
+ vector7<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5)
         {
             typedef
- fusion::vector7<
+ vector7<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
             typedef
- fusion::vector7<
+ vector7<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -321,58 +297,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6)
         {
             typedef
- fusion::vector8<
+ vector8<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6) const
         {
             typedef
- fusion::vector8<
+ vector8<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6)
         {
             typedef
- fusion::vector8<
+ vector8<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
             typedef
- fusion::vector8<
+ vector8<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -390,58 +360,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7)
         {
             typedef
- fusion::vector9<
+ vector9<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7) const
         {
             typedef
- fusion::vector9<
+ vector9<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7)
         {
             typedef
- fusion::vector9<
+ vector9<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&>::type
         operator()(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
         {
             typedef
- fusion::vector9<
+ vector9<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -459,58 +423,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8)
         {
             typedef
- fusion::vector10<
+ vector10<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8) const
         {
             typedef
- fusion::vector10<
+ vector10<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&>::type
         operator()(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)
         {
             typedef
- fusion::vector10<
+ vector10<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&>::type
         operator()(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
         {
             typedef
- fusion::vector10<
+ vector10<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -528,58 +486,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9)
         {
             typedef
- fusion::vector11<
+ vector11<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9) const
         {
             typedef
- fusion::vector11<
+ vector11<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&>::type
         operator()(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)
         {
             typedef
- fusion::vector11<
+ vector11<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&>::type
         operator()(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
         {
             typedef
- fusion::vector11<
+ vector11<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -597,58 +549,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10)
         {
             typedef
- fusion::vector12<
+ vector12<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <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::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10) const
         {
             typedef
- fusion::vector12<
+ vector12<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <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::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&>::type
         operator()(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)
         {
             typedef
- fusion::vector12<
+ vector12<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <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::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&>::type
         operator()(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
         {
             typedef
- fusion::vector12<
+ vector12<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -666,58 +612,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11)
         {
             typedef
- fusion::vector13<
+ vector13<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11) const
         {
             typedef
- fusion::vector13<
+ vector13<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector13<
+ vector13<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector13<
+ vector13<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -735,58 +675,52 @@
         operator()(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)
         {
             typedef
- fusion::vector14<
+ vector14<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector14<
+ vector14<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector14<
+ vector14<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector14<
+ vector14<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -804,58 +738,52 @@
         operator()(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)
         {
             typedef
- fusion::vector15<
+ vector15<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector15<
+ vector15<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector15<
+ vector15<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector15<
+ vector15<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -873,58 +801,52 @@
         operator()(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)
         {
             typedef
- fusion::vector16<
+ vector16<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector16<
+ vector16<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector16<
+ vector16<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector16<
+ vector16<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -942,58 +864,52 @@
         operator()(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)
         {
             typedef
- fusion::vector17<
+ vector17<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector17<
+ vector17<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector17<
+ vector17<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector17<
+ vector17<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1011,58 +927,52 @@
         operator()(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)
         {
             typedef
- fusion::vector18<
+ vector18<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector18<
+ vector18<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector18<
+ vector18<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector18<
+ vector18<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1080,58 +990,52 @@
         operator()(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)
         {
             typedef
- fusion::vector19<
+ vector19<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector19<
+ vector19<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector19<
+ vector19<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector19<
+ vector19<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1149,58 +1053,52 @@
         operator()(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)
         {
             typedef
- fusion::vector20<
+ vector20<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector20<
+ vector20<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector20<
+ vector20<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector20<
+ vector20<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1218,56 +1116,50 @@
         operator()(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)
         {
             typedef
- fusion::vector21<
+ vector21<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector21<
+ vector21<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector21<
+ vector21<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector21<
+ vector21<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19};
+
+ return eval(*this, context(env, default_actions()));
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator_30.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator_30.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator_30.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -16,7 +16,7 @@
         struct result<This(A0)>
             : result_of::actor<Expr, A0>
         {};
- template <typename A0> typename result_of::actor<Expr, A0 &>::type operator()(A0 & a0) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 &>::type args_type; args_type args(this, a0); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0> typename result_of::actor<Expr, A0 &>::type operator()(A0 & a0) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 &>::type args_type; args_type args(this, a0); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0> typename result_of::actor<Expr, A0 const&>::type operator()(A0 const& a0) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 const&>::type args_type; args_type args(this, a0); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0> typename result_of::actor<Expr,
A0 const&>::type operator()(A0 const& a0) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 const&>::type args_type; args_type args(this, a0); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); }
+ template <typename A0> typename result_of::actor<Expr, A0 &>::type operator()(A0 & a0) const { typedef vector2< const actor<Expr> *, A0 & > env_type; env_type env = {this, a0}; return eval(*this, context(env, default_actions())); } template <typename A0> typename result_of::actor<Expr, A0 &>::type operator()(A0 & a0) { typedef vector2< const actor<Expr> *, A0 & > env_type; env_type env = {this, a0}; return eval(*this, context(env, default_actions())); } template <typename A0> typename result_of::actor<Expr, A0 const&>::type operator()(A0 const& a0) const { typedef vector2< const actor<Expr> *, A0 const& > env_type; env_type env = {this, a0}; return eval(*this, context(env, default_actions())); } template <typename A0> typename result_of::actor<Expr, A0 const&>::type operator()(A0 const& a0) { typedef vector2< const actor<Expr> *, A0 const& > env_type; env_type env = {this, a0}; return eval(*this, context(env, default_actions())); }
     
     
     
@@ -28,7 +28,7 @@
         struct result<This(A0 , A1)>
             : result_of::actor<Expr, A0 , A1>
         {};
- template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 & , A1 &>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 & , A1 &>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 & , A1 const&>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, d
efault_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 & , A1 const&>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 const& , A1 &>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 const
& , A1 &>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 const& , A1 const&>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 const& , A1 const&>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); }
+ template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) const { typedef vector3< const actor<Expr> *, A0 & , A1 & > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) { typedef vector3< const actor<Expr> *, A0 & , A1 & > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) const { typedef vector3< const actor<Expr> *, A0 & , A1 const& > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) { typedef vector3< const actor<Expr> *, A0 & , A1 co
nst& > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) const { typedef vector3< const actor<Expr> *, A0 const& , A1 & > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) { typedef vector3< const actor<Expr> *, A0 const& , A1 & > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) const { typedef vector3< const actor<Expr> *, A0 const& , A1 const& > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typ
ename result_of::actor<Expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) { typedef vector3< const actor<Expr> *, A0 const& , A1 const& > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); }
     
     
     
@@ -45,58 +45,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2)
         {
             typedef
- fusion::vector4<
+ vector4<
                     const actor<Expr> *, A0 & , A1 & , A2 &
>
- args_type;
- args_type args(this, a0 , a1 , a2);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2>
         typename result_of::actor<Expr, A0 & , A1 & , A2 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2) const
         {
             typedef
- fusion::vector4<
+ vector4<
                     const actor<Expr> *, A0 & , A1 & , A2 &
>
- args_type;
- args_type args(this, a0 , a1 , a2);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2)
         {
             typedef
- fusion::vector4<
+ vector4<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
             typedef
- fusion::vector4<
+ vector4<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -114,58 +108,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3)
         {
             typedef
- fusion::vector5<
+ vector5<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3) const
         {
             typedef
- fusion::vector5<
+ vector5<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3)
         {
             typedef
- fusion::vector5<
+ vector5<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
             typedef
- fusion::vector5<
+ vector5<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -183,58 +171,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4)
         {
             typedef
- fusion::vector6<
+ vector6<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4) const
         {
             typedef
- fusion::vector6<
+ vector6<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4)
         {
             typedef
- fusion::vector6<
+ vector6<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
             typedef
- fusion::vector6<
+ vector6<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -252,58 +234,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5)
         {
             typedef
- fusion::vector7<
+ vector7<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5) const
         {
             typedef
- fusion::vector7<
+ vector7<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5)
         {
             typedef
- fusion::vector7<
+ vector7<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
             typedef
- fusion::vector7<
+ vector7<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -321,58 +297,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6)
         {
             typedef
- fusion::vector8<
+ vector8<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6) const
         {
             typedef
- fusion::vector8<
+ vector8<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6)
         {
             typedef
- fusion::vector8<
+ vector8<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
             typedef
- fusion::vector8<
+ vector8<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -390,58 +360,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7)
         {
             typedef
- fusion::vector9<
+ vector9<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7) const
         {
             typedef
- fusion::vector9<
+ vector9<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7)
         {
             typedef
- fusion::vector9<
+ vector9<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&>::type
         operator()(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
         {
             typedef
- fusion::vector9<
+ vector9<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -459,58 +423,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8)
         {
             typedef
- fusion::vector10<
+ vector10<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8) const
         {
             typedef
- fusion::vector10<
+ vector10<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&>::type
         operator()(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)
         {
             typedef
- fusion::vector10<
+ vector10<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&>::type
         operator()(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
         {
             typedef
- fusion::vector10<
+ vector10<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -528,58 +486,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9)
         {
             typedef
- fusion::vector11<
+ vector11<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9) const
         {
             typedef
- fusion::vector11<
+ vector11<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&>::type
         operator()(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)
         {
             typedef
- fusion::vector11<
+ vector11<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&>::type
         operator()(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
         {
             typedef
- fusion::vector11<
+ vector11<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -597,58 +549,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10)
         {
             typedef
- fusion::vector12<
+ vector12<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <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::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10) const
         {
             typedef
- fusion::vector12<
+ vector12<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <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::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&>::type
         operator()(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)
         {
             typedef
- fusion::vector12<
+ vector12<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <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::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&>::type
         operator()(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
         {
             typedef
- fusion::vector12<
+ vector12<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -666,58 +612,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11)
         {
             typedef
- fusion::vector13<
+ vector13<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11) const
         {
             typedef
- fusion::vector13<
+ vector13<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector13<
+ vector13<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector13<
+ vector13<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -735,58 +675,52 @@
         operator()(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)
         {
             typedef
- fusion::vector14<
+ vector14<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector14<
+ vector14<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector14<
+ vector14<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector14<
+ vector14<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -804,58 +738,52 @@
         operator()(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)
         {
             typedef
- fusion::vector15<
+ vector15<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector15<
+ vector15<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector15<
+ vector15<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector15<
+ vector15<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -873,58 +801,52 @@
         operator()(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)
         {
             typedef
- fusion::vector16<
+ vector16<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector16<
+ vector16<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector16<
+ vector16<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector16<
+ vector16<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -942,58 +864,52 @@
         operator()(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)
         {
             typedef
- fusion::vector17<
+ vector17<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector17<
+ vector17<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector17<
+ vector17<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector17<
+ vector17<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1011,58 +927,52 @@
         operator()(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)
         {
             typedef
- fusion::vector18<
+ vector18<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector18<
+ vector18<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector18<
+ vector18<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector18<
+ vector18<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1080,58 +990,52 @@
         operator()(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)
         {
             typedef
- fusion::vector19<
+ vector19<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector19<
+ vector19<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector19<
+ vector19<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector19<
+ vector19<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1149,58 +1053,52 @@
         operator()(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)
         {
             typedef
- fusion::vector20<
+ vector20<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector20<
+ vector20<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector20<
+ vector20<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector20<
+ vector20<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1218,58 +1116,52 @@
         operator()(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)
         {
             typedef
- fusion::vector21<
+ vector21<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector21<
+ vector21<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector21<
+ vector21<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector21<
+ vector21<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1287,58 +1179,52 @@
         operator()(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)
         {
             typedef
- fusion::vector22<
+ vector22<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector22<
+ vector22<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector22<
+ vector22<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector22<
+ vector22<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1356,58 +1242,52 @@
         operator()(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)
         {
             typedef
- fusion::vector23<
+ vector23<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector23<
+ vector23<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector23<
+ vector23<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector23<
+ vector23<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1425,58 +1305,52 @@
         operator()(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)
         {
             typedef
- fusion::vector24<
+ vector24<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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) const
         {
             typedef
- fusion::vector24<
+ vector24<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector24<
+ vector24<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector24<
+ vector24<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1494,58 +1368,52 @@
         operator()(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)
         {
             typedef
- fusion::vector25<
+ vector25<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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) const
         {
             typedef
- fusion::vector25<
+ vector25<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector25<
+ vector25<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector25<
+ vector25<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -1563,58 +1431,52 @@
         operator()(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)
         {
             typedef
- fusion::vector26<
+ vector26<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , 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()(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) const
         {
             typedef
- fusion::vector26<
+ vector26<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector26<
+ vector26<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector26<
+ vector26<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -1632,58 +1494,52 @@
         operator()(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)
         {
             typedef
- fusion::vector27<
+ vector27<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , 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()(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) const
         {
             typedef
- fusion::vector27<
+ vector27<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector27<
+ vector27<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector27<
+ vector27<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -1701,58 +1557,52 @@
         operator()(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)
         {
             typedef
- fusion::vector28<
+ vector28<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector28<
+ vector28<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector28<
+ vector28<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector28<
+ vector28<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -1770,58 +1620,52 @@
         operator()(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)
         {
             typedef
- fusion::vector29<
+ vector29<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector29<
+ vector29<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector29<
+ vector29<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector29<
+ vector29<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -1839,58 +1683,52 @@
         operator()(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)
         {
             typedef
- fusion::vector30<
+ vector30<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector30<
+ vector30<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector30<
+ vector30<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector30<
+ vector30<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -1908,56 +1746,50 @@
         operator()(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)
         {
             typedef
- fusion::vector31<
+ vector31<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector31<
+ vector31<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector31<
+ vector31<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector31<
+ vector31<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator_40.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator_40.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator_40.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -16,7 +16,7 @@
         struct result<This(A0)>
             : result_of::actor<Expr, A0>
         {};
- template <typename A0> typename result_of::actor<Expr, A0 &>::type operator()(A0 & a0) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 &>::type args_type; args_type args(this, a0); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0> typename result_of::actor<Expr, A0 &>::type operator()(A0 & a0) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 &>::type args_type; args_type args(this, a0); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0> typename result_of::actor<Expr, A0 const&>::type operator()(A0 const& a0) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 const&>::type args_type; args_type args(this, a0); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0> typename result_of::actor<Expr,
A0 const&>::type operator()(A0 const& a0) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 const&>::type args_type; args_type args(this, a0); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); }
+ template <typename A0> typename result_of::actor<Expr, A0 &>::type operator()(A0 & a0) const { typedef vector2< const actor<Expr> *, A0 & > env_type; env_type env = {this, a0}; return eval(*this, context(env, default_actions())); } template <typename A0> typename result_of::actor<Expr, A0 &>::type operator()(A0 & a0) { typedef vector2< const actor<Expr> *, A0 & > env_type; env_type env = {this, a0}; return eval(*this, context(env, default_actions())); } template <typename A0> typename result_of::actor<Expr, A0 const&>::type operator()(A0 const& a0) const { typedef vector2< const actor<Expr> *, A0 const& > env_type; env_type env = {this, a0}; return eval(*this, context(env, default_actions())); } template <typename A0> typename result_of::actor<Expr, A0 const&>::type operator()(A0 const& a0) { typedef vector2< const actor<Expr> *, A0 const& > env_type; env_type env = {this, a0}; return eval(*this, context(env, default_actions())); }
     
     
     
@@ -28,7 +28,7 @@
         struct result<This(A0 , A1)>
             : result_of::actor<Expr, A0 , A1>
         {};
- template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 & , A1 &>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 & , A1 &>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 & , A1 const&>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, d
efault_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 & , A1 const&>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 const& , A1 &>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 const
& , A1 &>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 const& , A1 const&>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 const& , A1 const&>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); }
+ template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) const { typedef vector3< const actor<Expr> *, A0 & , A1 & > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) { typedef vector3< const actor<Expr> *, A0 & , A1 & > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) const { typedef vector3< const actor<Expr> *, A0 & , A1 const& > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) { typedef vector3< const actor<Expr> *, A0 & , A1 co
nst& > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) const { typedef vector3< const actor<Expr> *, A0 const& , A1 & > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) { typedef vector3< const actor<Expr> *, A0 const& , A1 & > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) const { typedef vector3< const actor<Expr> *, A0 const& , A1 const& > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typ
ename result_of::actor<Expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) { typedef vector3< const actor<Expr> *, A0 const& , A1 const& > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); }
     
     
     
@@ -45,58 +45,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2)
         {
             typedef
- fusion::vector4<
+ vector4<
                     const actor<Expr> *, A0 & , A1 & , A2 &
>
- args_type;
- args_type args(this, a0 , a1 , a2);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2>
         typename result_of::actor<Expr, A0 & , A1 & , A2 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2) const
         {
             typedef
- fusion::vector4<
+ vector4<
                     const actor<Expr> *, A0 & , A1 & , A2 &
>
- args_type;
- args_type args(this, a0 , a1 , a2);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2)
         {
             typedef
- fusion::vector4<
+ vector4<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
             typedef
- fusion::vector4<
+ vector4<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -114,58 +108,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3)
         {
             typedef
- fusion::vector5<
+ vector5<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3) const
         {
             typedef
- fusion::vector5<
+ vector5<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3)
         {
             typedef
- fusion::vector5<
+ vector5<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
             typedef
- fusion::vector5<
+ vector5<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -183,58 +171,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4)
         {
             typedef
- fusion::vector6<
+ vector6<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4) const
         {
             typedef
- fusion::vector6<
+ vector6<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4)
         {
             typedef
- fusion::vector6<
+ vector6<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
             typedef
- fusion::vector6<
+ vector6<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -252,58 +234,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5)
         {
             typedef
- fusion::vector7<
+ vector7<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5) const
         {
             typedef
- fusion::vector7<
+ vector7<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5)
         {
             typedef
- fusion::vector7<
+ vector7<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
             typedef
- fusion::vector7<
+ vector7<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -321,58 +297,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6)
         {
             typedef
- fusion::vector8<
+ vector8<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6) const
         {
             typedef
- fusion::vector8<
+ vector8<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6)
         {
             typedef
- fusion::vector8<
+ vector8<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
             typedef
- fusion::vector8<
+ vector8<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -390,58 +360,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7)
         {
             typedef
- fusion::vector9<
+ vector9<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7) const
         {
             typedef
- fusion::vector9<
+ vector9<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7)
         {
             typedef
- fusion::vector9<
+ vector9<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&>::type
         operator()(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
         {
             typedef
- fusion::vector9<
+ vector9<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -459,58 +423,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8)
         {
             typedef
- fusion::vector10<
+ vector10<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8) const
         {
             typedef
- fusion::vector10<
+ vector10<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&>::type
         operator()(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)
         {
             typedef
- fusion::vector10<
+ vector10<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&>::type
         operator()(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
         {
             typedef
- fusion::vector10<
+ vector10<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -528,58 +486,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9)
         {
             typedef
- fusion::vector11<
+ vector11<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9) const
         {
             typedef
- fusion::vector11<
+ vector11<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&>::type
         operator()(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)
         {
             typedef
- fusion::vector11<
+ vector11<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&>::type
         operator()(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
         {
             typedef
- fusion::vector11<
+ vector11<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -597,58 +549,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10)
         {
             typedef
- fusion::vector12<
+ vector12<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <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::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10) const
         {
             typedef
- fusion::vector12<
+ vector12<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <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::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&>::type
         operator()(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)
         {
             typedef
- fusion::vector12<
+ vector12<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <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::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&>::type
         operator()(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
         {
             typedef
- fusion::vector12<
+ vector12<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -666,58 +612,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11)
         {
             typedef
- fusion::vector13<
+ vector13<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11) const
         {
             typedef
- fusion::vector13<
+ vector13<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector13<
+ vector13<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector13<
+ vector13<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -735,58 +675,52 @@
         operator()(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)
         {
             typedef
- fusion::vector14<
+ vector14<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector14<
+ vector14<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector14<
+ vector14<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector14<
+ vector14<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -804,58 +738,52 @@
         operator()(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)
         {
             typedef
- fusion::vector15<
+ vector15<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector15<
+ vector15<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector15<
+ vector15<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector15<
+ vector15<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -873,58 +801,52 @@
         operator()(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)
         {
             typedef
- fusion::vector16<
+ vector16<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector16<
+ vector16<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector16<
+ vector16<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector16<
+ vector16<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -942,58 +864,52 @@
         operator()(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)
         {
             typedef
- fusion::vector17<
+ vector17<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector17<
+ vector17<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector17<
+ vector17<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector17<
+ vector17<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1011,58 +927,52 @@
         operator()(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)
         {
             typedef
- fusion::vector18<
+ vector18<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector18<
+ vector18<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector18<
+ vector18<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector18<
+ vector18<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1080,58 +990,52 @@
         operator()(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)
         {
             typedef
- fusion::vector19<
+ vector19<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector19<
+ vector19<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector19<
+ vector19<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector19<
+ vector19<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1149,58 +1053,52 @@
         operator()(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)
         {
             typedef
- fusion::vector20<
+ vector20<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector20<
+ vector20<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector20<
+ vector20<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector20<
+ vector20<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1218,58 +1116,52 @@
         operator()(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)
         {
             typedef
- fusion::vector21<
+ vector21<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector21<
+ vector21<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector21<
+ vector21<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector21<
+ vector21<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1287,58 +1179,52 @@
         operator()(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)
         {
             typedef
- fusion::vector22<
+ vector22<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector22<
+ vector22<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector22<
+ vector22<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector22<
+ vector22<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1356,58 +1242,52 @@
         operator()(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)
         {
             typedef
- fusion::vector23<
+ vector23<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector23<
+ vector23<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector23<
+ vector23<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector23<
+ vector23<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1425,58 +1305,52 @@
         operator()(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)
         {
             typedef
- fusion::vector24<
+ vector24<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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) const
         {
             typedef
- fusion::vector24<
+ vector24<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector24<
+ vector24<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector24<
+ vector24<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1494,58 +1368,52 @@
         operator()(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)
         {
             typedef
- fusion::vector25<
+ vector25<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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) const
         {
             typedef
- fusion::vector25<
+ vector25<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector25<
+ vector25<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector25<
+ vector25<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -1563,58 +1431,52 @@
         operator()(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)
         {
             typedef
- fusion::vector26<
+ vector26<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , 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()(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) const
         {
             typedef
- fusion::vector26<
+ vector26<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector26<
+ vector26<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector26<
+ vector26<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -1632,58 +1494,52 @@
         operator()(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)
         {
             typedef
- fusion::vector27<
+ vector27<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , 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()(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) const
         {
             typedef
- fusion::vector27<
+ vector27<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector27<
+ vector27<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector27<
+ vector27<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -1701,58 +1557,52 @@
         operator()(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)
         {
             typedef
- fusion::vector28<
+ vector28<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector28<
+ vector28<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector28<
+ vector28<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector28<
+ vector28<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -1770,58 +1620,52 @@
         operator()(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)
         {
             typedef
- fusion::vector29<
+ vector29<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector29<
+ vector29<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector29<
+ vector29<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector29<
+ vector29<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -1839,58 +1683,52 @@
         operator()(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)
         {
             typedef
- fusion::vector30<
+ vector30<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector30<
+ vector30<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector30<
+ vector30<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector30<
+ vector30<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -1908,58 +1746,52 @@
         operator()(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)
         {
             typedef
- fusion::vector31<
+ vector31<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector31<
+ vector31<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector31<
+ vector31<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector31<
+ vector31<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -1977,58 +1809,52 @@
         operator()(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)
         {
             typedef
- fusion::vector32<
+ vector32<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector32<
+ vector32<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector32<
+ vector32<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector32<
+ vector32<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -2046,58 +1872,52 @@
         operator()(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)
         {
             typedef
- fusion::vector33<
+ vector33<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector33<
+ vector33<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector33<
+ vector33<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector33<
+ vector33<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -2115,58 +1935,52 @@
         operator()(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)
         {
             typedef
- fusion::vector34<
+ vector34<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector34<
+ vector34<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector34<
+ vector34<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector34<
+ vector34<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -2184,58 +1998,52 @@
         operator()(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)
         {
             typedef
- fusion::vector35<
+ vector35<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector35<
+ vector35<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector35<
+ vector35<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector35<
+ vector35<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -2253,58 +2061,52 @@
         operator()(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)
         {
             typedef
- fusion::vector36<
+ vector36<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector36<
+ vector36<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector36<
+ vector36<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector36<
+ vector36<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -2322,58 +2124,52 @@
         operator()(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)
         {
             typedef
- fusion::vector37<
+ vector37<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector37<
+ vector37<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector37<
+ vector37<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector37<
+ vector37<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -2391,58 +2187,52 @@
         operator()(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)
         {
             typedef
- fusion::vector38<
+ vector38<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector38<
+ vector38<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector38<
+ vector38<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector38<
+ vector38<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -2460,58 +2250,52 @@
         operator()(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)
         {
             typedef
- fusion::vector39<
+ vector39<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector39<
+ vector39<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector39<
+ vector39<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector39<
+ vector39<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -2529,58 +2313,52 @@
         operator()(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)
         {
             typedef
- fusion::vector40<
+ vector40<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector40<
+ vector40<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector40<
+ vector40<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector40<
+ vector40<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -2598,56 +2376,50 @@
         operator()(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)
         {
             typedef
- fusion::vector41<
+ vector41<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector41<
+ vector41<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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>
         typename result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector41<
+ vector41<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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>
         typename result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector41<
+ vector41<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator_50.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator_50.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_operator_50.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -16,7 +16,7 @@
         struct result<This(A0)>
             : result_of::actor<Expr, A0>
         {};
- template <typename A0> typename result_of::actor<Expr, A0 &>::type operator()(A0 & a0) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 &>::type args_type; args_type args(this, a0); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0> typename result_of::actor<Expr, A0 &>::type operator()(A0 & a0) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 &>::type args_type; args_type args(this, a0); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0> typename result_of::actor<Expr, A0 const&>::type operator()(A0 const& a0) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 const&>::type args_type; args_type args(this, a0); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0> typename result_of::actor<Expr,
A0 const&>::type operator()(A0 const& a0) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 const&>::type args_type; args_type args(this, a0); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); }
+ template <typename A0> typename result_of::actor<Expr, A0 &>::type operator()(A0 & a0) const { typedef vector2< const actor<Expr> *, A0 & > env_type; env_type env = {this, a0}; return eval(*this, context(env, default_actions())); } template <typename A0> typename result_of::actor<Expr, A0 &>::type operator()(A0 & a0) { typedef vector2< const actor<Expr> *, A0 & > env_type; env_type env = {this, a0}; return eval(*this, context(env, default_actions())); } template <typename A0> typename result_of::actor<Expr, A0 const&>::type operator()(A0 const& a0) const { typedef vector2< const actor<Expr> *, A0 const& > env_type; env_type env = {this, a0}; return eval(*this, context(env, default_actions())); } template <typename A0> typename result_of::actor<Expr, A0 const&>::type operator()(A0 const& a0) { typedef vector2< const actor<Expr> *, A0 const& > env_type; env_type env = {this, a0}; return eval(*this, context(env, default_actions())); }
     
     
     
@@ -28,7 +28,7 @@
         struct result<This(A0 , A1)>
             : result_of::actor<Expr, A0 , A1>
         {};
- template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 & , A1 &>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 & , A1 &>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 & , A1 const&>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, d
efault_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 & , A1 const&>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 const& , A1 &>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 const
& , A1 &>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) const { typedef typename fusion::result_of::make_vector<const actor<Expr> *, A0 const& , A1 const&>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) { typedef typename fusion::result_of::make_vector<const actor<Expr> *,A0 const& , A1 const&>::type args_type; args_type args(this, a0 , a1); fusion::vector2< args_type&, default_actions > env(args, default_actions()); return eval(*this, env); }
+ template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) const { typedef vector3< const actor<Expr> *, A0 & , A1 & > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 &>::type operator()(A0 & a0 , A1 & a1) { typedef vector3< const actor<Expr> *, A0 & , A1 & > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) const { typedef vector3< const actor<Expr> *, A0 & , A1 const& > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 & , A1 const&>::type operator()(A0 & a0 , A1 const& a1) { typedef vector3< const actor<Expr> *, A0 & , A1 co
nst& > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) const { typedef vector3< const actor<Expr> *, A0 const& , A1 & > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 &>::type operator()(A0 const& a0 , A1 & a1) { typedef vector3< const actor<Expr> *, A0 const& , A1 & > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typename result_of::actor<Expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) const { typedef vector3< const actor<Expr> *, A0 const& , A1 const& > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); } template <typename A0 , typename A1> typ
ename result_of::actor<Expr, A0 const& , A1 const&>::type operator()(A0 const& a0 , A1 const& a1) { typedef vector3< const actor<Expr> *, A0 const& , A1 const& > env_type; env_type env = {this, a0 , a1}; return eval(*this, context(env, default_actions())); }
     
     
     
@@ -45,58 +45,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2)
         {
             typedef
- fusion::vector4<
+ vector4<
                     const actor<Expr> *, A0 & , A1 & , A2 &
>
- args_type;
- args_type args(this, a0 , a1 , a2);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2>
         typename result_of::actor<Expr, A0 & , A1 & , A2 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2) const
         {
             typedef
- fusion::vector4<
+ vector4<
                     const actor<Expr> *, A0 & , A1 & , A2 &
>
- args_type;
- args_type args(this, a0 , a1 , a2);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2)
         {
             typedef
- fusion::vector4<
+ vector4<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
             typedef
- fusion::vector4<
+ vector4<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -114,58 +108,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3)
         {
             typedef
- fusion::vector5<
+ vector5<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3) const
         {
             typedef
- fusion::vector5<
+ vector5<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3)
         {
             typedef
- fusion::vector5<
+ vector5<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
             typedef
- fusion::vector5<
+ vector5<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -183,58 +171,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4)
         {
             typedef
- fusion::vector6<
+ vector6<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4) const
         {
             typedef
- fusion::vector6<
+ vector6<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4)
         {
             typedef
- fusion::vector6<
+ vector6<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
             typedef
- fusion::vector6<
+ vector6<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -252,58 +234,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5)
         {
             typedef
- fusion::vector7<
+ vector7<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5) const
         {
             typedef
- fusion::vector7<
+ vector7<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5)
         {
             typedef
- fusion::vector7<
+ vector7<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
             typedef
- fusion::vector7<
+ vector7<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -321,58 +297,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6)
         {
             typedef
- fusion::vector8<
+ vector8<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6) const
         {
             typedef
- fusion::vector8<
+ vector8<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6)
         {
             typedef
- fusion::vector8<
+ vector8<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
             typedef
- fusion::vector8<
+ vector8<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -390,58 +360,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7)
         {
             typedef
- fusion::vector9<
+ vector9<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7) const
         {
             typedef
- fusion::vector9<
+ vector9<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&>::type
         operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7)
         {
             typedef
- fusion::vector9<
+ vector9<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&>::type
         operator()(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
         {
             typedef
- fusion::vector9<
+ vector9<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -459,58 +423,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8)
         {
             typedef
- fusion::vector10<
+ vector10<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8) const
         {
             typedef
- fusion::vector10<
+ vector10<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&>::type
         operator()(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)
         {
             typedef
- fusion::vector10<
+ vector10<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&>::type
         operator()(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
         {
             typedef
- fusion::vector10<
+ vector10<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -528,58 +486,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9)
         {
             typedef
- fusion::vector11<
+ vector11<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9) const
         {
             typedef
- fusion::vector11<
+ vector11<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&>::type
         operator()(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)
         {
             typedef
- fusion::vector11<
+ vector11<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         typename result_of::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&>::type
         operator()(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
         {
             typedef
- fusion::vector11<
+ vector11<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -597,58 +549,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10)
         {
             typedef
- fusion::vector12<
+ vector12<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10};
+
+ return eval(*this, context(env, default_actions()));
         }
         template <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::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10) const
         {
             typedef
- fusion::vector12<
+ vector12<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <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::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&>::type
         operator()(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)
         {
             typedef
- fusion::vector12<
+ vector12<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         template <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::actor<Expr, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&>::type
         operator()(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
         {
             typedef
- fusion::vector12<
+ vector12<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -666,58 +612,52 @@
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11)
         {
             typedef
- fusion::vector13<
+ vector13<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 &>::type
         operator()(A0 & a0 , A1 & a1 , A2 & a2 , A3 & a3 , A4 & a4 , A5 & a5 , A6 & a6 , A7 & a7 , A8 & a8 , A9 & a9 , A10 & a10 , A11 & a11) const
         {
             typedef
- fusion::vector13<
+ vector13<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector13<
+ vector13<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector13<
+ vector13<
                     const actor<Expr> *, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -735,58 +675,52 @@
         operator()(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)
         {
             typedef
- fusion::vector14<
+ vector14<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector14<
+ vector14<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector14<
+ vector14<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector14<
+ vector14<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -804,58 +738,52 @@
         operator()(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)
         {
             typedef
- fusion::vector15<
+ vector15<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector15<
+ vector15<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector15<
+ vector15<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector15<
+ vector15<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -873,58 +801,52 @@
         operator()(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)
         {
             typedef
- fusion::vector16<
+ vector16<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector16<
+ vector16<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector16<
+ vector16<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector16<
+ vector16<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -942,58 +864,52 @@
         operator()(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)
         {
             typedef
- fusion::vector17<
+ vector17<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector17<
+ vector17<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector17<
+ vector17<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector17<
+ vector17<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1011,58 +927,52 @@
         operator()(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)
         {
             typedef
- fusion::vector18<
+ vector18<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector18<
+ vector18<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector18<
+ vector18<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector18<
+ vector18<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1080,58 +990,52 @@
         operator()(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)
         {
             typedef
- fusion::vector19<
+ vector19<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector19<
+ vector19<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector19<
+ vector19<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector19<
+ vector19<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1149,58 +1053,52 @@
         operator()(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)
         {
             typedef
- fusion::vector20<
+ vector20<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector20<
+ vector20<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector20<
+ vector20<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector20<
+ vector20<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1218,58 +1116,52 @@
         operator()(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)
         {
             typedef
- fusion::vector21<
+ vector21<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector21<
+ vector21<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector21<
+ vector21<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector21<
+ vector21<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1287,58 +1179,52 @@
         operator()(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)
         {
             typedef
- fusion::vector22<
+ vector22<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector22<
+ vector22<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector22<
+ vector22<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector22<
+ vector22<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1356,58 +1242,52 @@
         operator()(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)
         {
             typedef
- fusion::vector23<
+ vector23<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 &>::type
         operator()(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) const
         {
             typedef
- fusion::vector23<
+ vector23<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector23<
+ vector23<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector23<
+ vector23<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1425,58 +1305,52 @@
         operator()(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)
         {
             typedef
- fusion::vector24<
+ vector24<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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) const
         {
             typedef
- fusion::vector24<
+ vector24<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector24<
+ vector24<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector24<
+ vector24<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -1494,58 +1368,52 @@
         operator()(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)
         {
             typedef
- fusion::vector25<
+ vector25<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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) const
         {
             typedef
- fusion::vector25<
+ vector25<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector25<
+ vector25<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector25<
+ vector25<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -1563,58 +1431,52 @@
         operator()(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)
         {
             typedef
- fusion::vector26<
+ vector26<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , 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()(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) const
         {
             typedef
- fusion::vector26<
+ vector26<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector26<
+ vector26<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector26<
+ vector26<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -1632,58 +1494,52 @@
         operator()(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)
         {
             typedef
- fusion::vector27<
+ vector27<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , 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()(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) const
         {
             typedef
- fusion::vector27<
+ vector27<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector27<
+ vector27<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector27<
+ vector27<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -1701,58 +1557,52 @@
         operator()(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)
         {
             typedef
- fusion::vector28<
+ vector28<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector28<
+ vector28<
                     const actor<Expr> *, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector28<
+ vector28<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector28<
+ vector28<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -1770,58 +1620,52 @@
         operator()(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)
         {
             typedef
- fusion::vector29<
+ vector29<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector29<
+ vector29<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector29<
+ vector29<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector29<
+ vector29<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -1839,58 +1683,52 @@
         operator()(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)
         {
             typedef
- fusion::vector30<
+ vector30<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector30<
+ vector30<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector30<
+ vector30<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector30<
+ vector30<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -1908,58 +1746,52 @@
         operator()(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)
         {
             typedef
- fusion::vector31<
+ vector31<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector31<
+ vector31<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector31<
+ vector31<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector31<
+ vector31<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -1977,58 +1809,52 @@
         operator()(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)
         {
             typedef
- fusion::vector32<
+ vector32<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector32<
+ vector32<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector32<
+ vector32<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector32<
+ vector32<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -2046,58 +1872,52 @@
         operator()(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)
         {
             typedef
- fusion::vector33<
+ vector33<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector33<
+ vector33<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector33<
+ vector33<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector33<
+ vector33<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -2115,58 +1935,52 @@
         operator()(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)
         {
             typedef
- fusion::vector34<
+ vector34<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector34<
+ vector34<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector34<
+ vector34<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector34<
+ vector34<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -2184,58 +1998,52 @@
         operator()(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)
         {
             typedef
- fusion::vector35<
+ vector35<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector35<
+ vector35<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector35<
+ vector35<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector35<
+ vector35<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -2253,58 +2061,52 @@
         operator()(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)
         {
             typedef
- fusion::vector36<
+ vector36<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector36<
+ vector36<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector36<
+ vector36<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector36<
+ vector36<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -2322,58 +2124,52 @@
         operator()(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)
         {
             typedef
- fusion::vector37<
+ vector37<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector37<
+ vector37<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector37<
+ vector37<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector37<
+ vector37<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -2391,58 +2187,52 @@
         operator()(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)
         {
             typedef
- fusion::vector38<
+ vector38<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector38<
+ vector38<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector38<
+ vector38<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector38<
+ vector38<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -2460,58 +2250,52 @@
         operator()(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)
         {
             typedef
- fusion::vector39<
+ vector39<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector39<
+ vector39<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector39<
+ vector39<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector39<
+ vector39<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -2529,58 +2313,52 @@
         operator()(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)
         {
             typedef
- fusion::vector40<
+ vector40<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector40<
+ vector40<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector40<
+ vector40<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector40<
+ vector40<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -2598,58 +2376,52 @@
         operator()(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)
         {
             typedef
- fusion::vector41<
+ vector41<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
         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>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , 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()(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) const
         {
             typedef
- fusion::vector41<
+ vector41<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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>
         typename result_of::actor<Expr, 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()(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)
         {
             typedef
- fusion::vector41<
+ vector41<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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>
         typename result_of::actor<Expr, 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()(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
         {
             typedef
- fusion::vector41<
+ vector41<
                     const actor<Expr> *, 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&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 eval(*this, context(env, default_actions()));
         }
     
     
@@ -2667,58 +2439,52 @@
         operator()(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 , A40 & a40)
         {
             typedef
- fusion::vector42<
+ vector42<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 & , A40 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , 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 & , A40 &>::type
         operator()(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 , A40 & a40) const
         {
             typedef
- fusion::vector42<
+ vector42<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 & , A40 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40>
         typename result_of::actor<Expr, 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& , A40 const&>::type
         operator()(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 , A40 const& a40)
         {
             typedef
- fusion::vector42<
+ vector42<
                     const actor<Expr> *, 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& , A40 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40>
         typename result_of::actor<Expr, 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& , A40 const&>::type
         operator()(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 , A40 const& a40) const
         {
             typedef
- fusion::vector42<
+ vector42<
                     const actor<Expr> *, 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& , A40 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -2736,58 +2502,52 @@
         operator()(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 , A40 & a40 , A41 & a41)
         {
             typedef
- fusion::vector43<
+ vector43<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 & , A40 & , A41 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , 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 & , A40 & , A41 &>::type
         operator()(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 , A40 & a40 , A41 & a41) const
         {
             typedef
- fusion::vector43<
+ vector43<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 & , A40 & , A41 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41>
         typename result_of::actor<Expr, 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& , A40 const& , A41 const&>::type
         operator()(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 , A40 const& a40 , A41 const& a41)
         {
             typedef
- fusion::vector43<
+ vector43<
                     const actor<Expr> *, 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& , A40 const& , A41 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41>
         typename result_of::actor<Expr, 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& , A40 const& , A41 const&>::type
         operator()(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 , A40 const& a40 , A41 const& a41) const
         {
             typedef
- fusion::vector43<
+ vector43<
                     const actor<Expr> *, 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& , A40 const& , A41 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -2805,58 +2565,52 @@
         operator()(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 , A40 & a40 , A41 & a41 , A42 & a42)
         {
             typedef
- fusion::vector44<
+ vector44<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 &>::type
         operator()(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 , A40 & a40 , A41 & a41 , A42 & a42) const
         {
             typedef
- fusion::vector44<
+ vector44<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42>
         typename result_of::actor<Expr, 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& , A40 const& , A41 const& , A42 const&>::type
         operator()(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 , A40 const& a40 , A41 const& a41 , A42 const& a42)
         {
             typedef
- fusion::vector44<
+ vector44<
                     const actor<Expr> *, 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& , A40 const& , A41 const& , A42 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42>
         typename result_of::actor<Expr, 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& , A40 const& , A41 const& , A42 const&>::type
         operator()(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 , A40 const& a40 , A41 const& a41 , A42 const& a42) const
         {
             typedef
- fusion::vector44<
+ vector44<
                     const actor<Expr> *, 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& , A40 const& , A41 const& , A42 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -2874,58 +2628,52 @@
         operator()(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 , A40 & a40 , A41 & a41 , A42 & a42 , A43 & a43)
         {
             typedef
- fusion::vector45<
+ vector45<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 &>::type
         operator()(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 , A40 & a40 , A41 & a41 , A42 & a42 , A43 & a43) const
         {
             typedef
- fusion::vector45<
+ vector45<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43>
         typename result_of::actor<Expr, 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& , A40 const& , A41 const& , A42 const& , A43 const&>::type
         operator()(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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43)
         {
             typedef
- fusion::vector45<
+ vector45<
                     const actor<Expr> *, 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& , A40 const& , A41 const& , A42 const& , A43 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43>
         typename result_of::actor<Expr, 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& , A40 const& , A41 const& , A42 const& , A43 const&>::type
         operator()(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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43) const
         {
             typedef
- fusion::vector45<
+ vector45<
                     const actor<Expr> *, 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& , A40 const& , A41 const& , A42 const& , A43 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -2943,58 +2691,52 @@
         operator()(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 , A40 & a40 , A41 & a41 , A42 & a42 , A43 & a43 , A44 & a44)
         {
             typedef
- fusion::vector46<
+ vector46<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 & , A44 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 & , A44 &>::type
         operator()(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 , A40 & a40 , A41 & a41 , A42 & a42 , A43 & a43 , A44 & a44) const
         {
             typedef
- fusion::vector46<
+ vector46<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 & , A44 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44>
         typename result_of::actor<Expr, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const&>::type
         operator()(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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44)
         {
             typedef
- fusion::vector46<
+ vector46<
                     const actor<Expr> *, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44>
         typename result_of::actor<Expr, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const&>::type
         operator()(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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44) const
         {
             typedef
- fusion::vector46<
+ vector46<
                     const actor<Expr> *, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -3012,58 +2754,52 @@
         operator()(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 , A40 & a40 , A41 & a41 , A42 & a42 , A43 & a43 , A44 & a44 , A45 & a45)
         {
             typedef
- fusion::vector47<
+ vector47<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 & , A44 & , A45 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 & , A44 & , A45 &>::type
         operator()(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 , A40 & a40 , A41 & a41 , A42 & a42 , A43 & a43 , A44 & a44 , A45 & a45) const
         {
             typedef
- fusion::vector47<
+ vector47<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 & , A44 & , A45 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
         typename result_of::actor<Expr, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const&>::type
         operator()(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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45)
         {
             typedef
- fusion::vector47<
+ vector47<
                     const actor<Expr> *, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
         typename result_of::actor<Expr, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const&>::type
         operator()(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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45) const
         {
             typedef
- fusion::vector47<
+ vector47<
                     const actor<Expr> *, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -3081,58 +2817,52 @@
         operator()(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 , A40 & a40 , A41 & a41 , A42 & a42 , A43 & a43 , A44 & a44 , A45 & a45 , A46 & a46)
         {
             typedef
- fusion::vector48<
+ vector48<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 & , A44 & , A45 & , A46 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 & , A44 & , A45 & , A46 &>::type
         operator()(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 , A40 & a40 , A41 & a41 , A42 & a42 , A43 & a43 , A44 & a44 , A45 & a45 , A46 & a46) const
         {
             typedef
- fusion::vector48<
+ vector48<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 & , A44 & , A45 & , A46 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
         typename result_of::actor<Expr, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const&>::type
         operator()(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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46)
         {
             typedef
- fusion::vector48<
+ vector48<
                     const actor<Expr> *, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
         typename result_of::actor<Expr, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const&>::type
         operator()(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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46) const
         {
             typedef
- fusion::vector48<
+ vector48<
                     const actor<Expr> *, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -3150,58 +2880,52 @@
         operator()(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 , A40 & a40 , A41 & a41 , A42 & a42 , A43 & a43 , A44 & a44 , A45 & a45 , A46 & a46 , A47 & a47)
         {
             typedef
- fusion::vector49<
+ vector49<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 & , A44 & , A45 & , A46 & , A47 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 & , A44 & , A45 & , A46 & , A47 &>::type
         operator()(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 , A40 & a40 , A41 & a41 , A42 & a42 , A43 & a43 , A44 & a44 , A45 & a45 , A46 & a46 , A47 & a47) const
         {
             typedef
- fusion::vector49<
+ vector49<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 & , A44 & , A45 & , A46 & , A47 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
         typename result_of::actor<Expr, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 const&>::type
         operator()(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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47)
         {
             typedef
- fusion::vector49<
+ vector49<
                     const actor<Expr> *, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
         typename result_of::actor<Expr, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 const&>::type
         operator()(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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47) const
         {
             typedef
- fusion::vector49<
+ vector49<
                     const actor<Expr> *, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -3219,58 +2943,52 @@
         operator()(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 , A40 & a40 , A41 & a41 , A42 & a42 , A43 & a43 , A44 & a44 , A45 & a45 , A46 & a46 , A47 & a47 , A48 & a48)
         {
             typedef
- fusion::vector50<
+ vector50<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 & , A44 & , A45 & , A46 & , A47 & , A48 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47 , a48);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47 , a48};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 & , A44 & , A45 & , A46 & , A47 & , A48 &>::type
         operator()(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 , A40 & a40 , A41 & a41 , A42 & a42 , A43 & a43 , A44 & a44 , A45 & a45 , A46 & a46 , A47 & a47 , A48 & a48) const
         {
             typedef
- fusion::vector50<
+ vector50<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 & , A44 & , A45 & , A46 & , A47 & , A48 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47 , a48);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47 , a48};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
         typename result_of::actor<Expr, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 const& , A48 const&>::type
         operator()(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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48)
         {
             typedef
- fusion::vector50<
+ vector50<
                     const actor<Expr> *, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 const& , A48 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47 , a48);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47 , a48};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
         typename result_of::actor<Expr, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 const& , A48 const&>::type
         operator()(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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48) const
         {
             typedef
- fusion::vector50<
+ vector50<
                     const actor<Expr> *, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 const& , A48 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47 , a48);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47 , a48};
+
+ return eval(*this, context(env, default_actions()));
         }
     
     
@@ -3288,56 +3006,50 @@
         operator()(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 , A40 & a40 , A41 & a41 , A42 & a42 , A43 & a43 , A44 & a44 , A45 & a45 , A46 & a46 , A47 & a47 , A48 & a48 , A49 & a49)
         {
             typedef
- fusion::vector51<
+ vector51<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 & , A44 & , A45 & , A46 & , A47 & , A48 & , A49 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47 , a48 , a49);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47 , a48 , a49};
+
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
         typename result_of::actor<Expr, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 & , A44 & , A45 & , A46 & , A47 & , A48 & , A49 &>::type
         operator()(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 , A40 & a40 , A41 & a41 , A42 & a42 , A43 & a43 , A44 & a44 , A45 & a45 , A46 & a46 , A47 & a47 , A48 & a48 , A49 & a49) const
         {
             typedef
- fusion::vector51<
+ vector51<
                     const actor<Expr> *, A0 & , A1 & , A2 & , 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 & , A40 & , A41 & , A42 & , A43 & , A44 & , A45 & , A46 & , A47 & , A48 & , A49 &
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47 , a48 , a49);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47 , a48 , a49};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
         typename result_of::actor<Expr, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 const& , A48 const& , A49 const&>::type
         operator()(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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48 , A49 const& a49)
         {
             typedef
- fusion::vector51<
+ vector51<
                     const actor<Expr> *, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 const& , A48 const& , A49 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47 , a48 , a49);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47 , a48 , a49};
             
- return eval(*this, env);
+ return eval(*this, context(env, default_actions()));
         }
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
         typename result_of::actor<Expr, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 const& , A48 const& , A49 const&>::type
         operator()(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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48 , A49 const& a49) const
         {
             typedef
- fusion::vector51<
+ vector51<
                     const actor<Expr> *, 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 const& , A48 const& , A49 const&
>
- args_type;
- args_type args(this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47 , a48 , a49);
- fusion::vector2<args_type&, default_actions>
- env(args, default_actions());
- return eval(*this, env);
+ env_type;
+ env_type env = {this, a0 , a1 , a2 , 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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47 , a48 , a49};
+
+ return eval(*this, context(env, default_actions()));
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,21 +5,21 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if !defined(PHOENIX_PREPROCESSED_ACTOR_RESULT_OF)
-#define PHOENIX_PREPROCESSED_ACTOR_RESULT_OF
+#if !defined(BOOST_PHOENIX_PREPROCESSED_ACTOR_RESULT_OF)
+#define BOOST_PHOENIX_PREPROCESSED_ACTOR_RESULT_OF
 
-#if PHOENIX_LIMIT <= 10
+#if BOOST_PHOENIX_LIMIT <= 10
 #include <boost/phoenix/core/detail/preprocessed/actor_result_of_10.hpp>
-#elif PHOENIX_LIMIT <= 20
+#elif BOOST_PHOENIX_LIMIT <= 20
 #include <boost/phoenix/core/detail/preprocessed/actor_result_of_20.hpp>
-#elif PHOENIX_LIMIT <= 30
+#elif BOOST_PHOENIX_LIMIT <= 30
 #include <boost/phoenix/core/detail/preprocessed/actor_result_of_30.hpp>
-#elif PHOENIX_LIMIT <= 40
+#elif BOOST_PHOENIX_LIMIT <= 40
 #include <boost/phoenix/core/detail/preprocessed/actor_result_of_40.hpp>
-#elif PHOENIX_LIMIT <= 50
+#elif BOOST_PHOENIX_LIMIT <= 50
 #include <boost/phoenix/core/detail/preprocessed/actor_result_of_50.hpp>
 #else
-#error "PHOENIX_LIMIT out of bounds for preprocessed headers"
+#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
 #endif
 
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of_10.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of_10.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of_10.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -17,10 +17,10 @@
             typedef
                 typename evaluator::impl<
                     Expr const&
- , fusion::vector2<
- fusion::vector1<const ::boost::phoenix::actor<Expr> *>
+ , vector2<
+ vector1<const ::boost::phoenix::actor<Expr> *> &
                       , default_actions
- >
+ > const &
                   , int
>::result_type
                 type;
@@ -31,7 +31,7 @@
             typedef
                 
                 typename mpl::eval_if<
- typename result_of::is_nullary<Expr>::type
+ result_of::is_nullary<Expr>
                   , nullary_actor_result<Expr>
                   , mpl::identity<detail::error_expecting_arguments>
>::type
@@ -51,10 +51,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector2<const ::boost::phoenix::actor<Expr> *, A0>
+ , vector2<
+ vector2<const ::boost::phoenix::actor<Expr> *, A0> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -73,10 +73,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector3<const ::boost::phoenix::actor<Expr> *, A0 , A1>
+ , vector2<
+ vector3<const ::boost::phoenix::actor<Expr> *, A0 , A1> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -95,10 +95,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector4<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2>
+ , vector2<
+ vector4<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -117,10 +117,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector5<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3>
+ , vector2<
+ vector5<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -139,10 +139,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector6<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4>
+ , vector2<
+ vector6<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -161,10 +161,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector7<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5>
+ , vector2<
+ vector7<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -183,10 +183,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector8<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6>
+ , vector2<
+ vector8<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -205,10 +205,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector9<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
+ , vector2<
+ vector9<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -227,10 +227,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector10<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
+ , vector2<
+ vector10<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -249,10 +249,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector11<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
+ , vector2<
+ vector11<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of_20.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of_20.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of_20.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -17,10 +17,10 @@
             typedef
                 typename evaluator::impl<
                     Expr const&
- , fusion::vector2<
- fusion::vector1<const ::boost::phoenix::actor<Expr> *>
+ , vector2<
+ vector1<const ::boost::phoenix::actor<Expr> *> &
                       , default_actions
- >
+ > const &
                   , int
>::result_type
                 type;
@@ -31,7 +31,7 @@
             typedef
                 
                 typename mpl::eval_if<
- typename result_of::is_nullary<Expr>::type
+ result_of::is_nullary<Expr>
                   , nullary_actor_result<Expr>
                   , mpl::identity<detail::error_expecting_arguments>
>::type
@@ -51,10 +51,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector2<const ::boost::phoenix::actor<Expr> *, A0>
+ , vector2<
+ vector2<const ::boost::phoenix::actor<Expr> *, A0> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -73,10 +73,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector3<const ::boost::phoenix::actor<Expr> *, A0 , A1>
+ , vector2<
+ vector3<const ::boost::phoenix::actor<Expr> *, A0 , A1> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -95,10 +95,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector4<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2>
+ , vector2<
+ vector4<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -117,10 +117,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector5<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3>
+ , vector2<
+ vector5<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -139,10 +139,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector6<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4>
+ , vector2<
+ vector6<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -161,10 +161,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector7<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5>
+ , vector2<
+ vector7<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -183,10 +183,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector8<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6>
+ , vector2<
+ vector8<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -205,10 +205,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector9<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
+ , vector2<
+ vector9<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -227,10 +227,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector10<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
+ , vector2<
+ vector10<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -249,10 +249,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector11<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
+ , vector2<
+ vector11<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -271,10 +271,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector12<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
+ , vector2<
+ vector12<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -293,10 +293,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector13<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
+ , vector2<
+ vector13<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -315,10 +315,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector14<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
+ , vector2<
+ vector14<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -337,10 +337,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector15<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
+ , vector2<
+ vector15<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -359,10 +359,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector16<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
+ , vector2<
+ vector16<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -381,10 +381,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector17<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
+ , vector2<
+ vector17<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -403,10 +403,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector18<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
+ , vector2<
+ vector18<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -425,10 +425,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector19<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
+ , vector2<
+ vector19<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -447,10 +447,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector20<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
+ , vector2<
+ vector20<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -469,10 +469,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector21<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
+ , vector2<
+ vector21<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of_30.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of_30.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of_30.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -17,10 +17,10 @@
             typedef
                 typename evaluator::impl<
                     Expr const&
- , fusion::vector2<
- fusion::vector1<const ::boost::phoenix::actor<Expr> *>
+ , vector2<
+ vector1<const ::boost::phoenix::actor<Expr> *> &
                       , default_actions
- >
+ > const &
                   , int
>::result_type
                 type;
@@ -31,7 +31,7 @@
             typedef
                 
                 typename mpl::eval_if<
- typename result_of::is_nullary<Expr>::type
+ result_of::is_nullary<Expr>
                   , nullary_actor_result<Expr>
                   , mpl::identity<detail::error_expecting_arguments>
>::type
@@ -51,10 +51,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector2<const ::boost::phoenix::actor<Expr> *, A0>
+ , vector2<
+ vector2<const ::boost::phoenix::actor<Expr> *, A0> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -73,10 +73,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector3<const ::boost::phoenix::actor<Expr> *, A0 , A1>
+ , vector2<
+ vector3<const ::boost::phoenix::actor<Expr> *, A0 , A1> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -95,10 +95,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector4<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2>
+ , vector2<
+ vector4<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -117,10 +117,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector5<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3>
+ , vector2<
+ vector5<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -139,10 +139,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector6<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4>
+ , vector2<
+ vector6<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -161,10 +161,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector7<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5>
+ , vector2<
+ vector7<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -183,10 +183,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector8<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6>
+ , vector2<
+ vector8<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -205,10 +205,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector9<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
+ , vector2<
+ vector9<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -227,10 +227,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector10<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
+ , vector2<
+ vector10<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -249,10 +249,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector11<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
+ , vector2<
+ vector11<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -271,10 +271,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector12<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
+ , vector2<
+ vector12<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -293,10 +293,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector13<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
+ , vector2<
+ vector13<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -315,10 +315,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector14<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
+ , vector2<
+ vector14<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -337,10 +337,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector15<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
+ , vector2<
+ vector15<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -359,10 +359,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector16<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
+ , vector2<
+ vector16<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -381,10 +381,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector17<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
+ , vector2<
+ vector17<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -403,10 +403,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector18<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
+ , vector2<
+ vector18<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -425,10 +425,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector19<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
+ , vector2<
+ vector19<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -447,10 +447,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector20<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
+ , vector2<
+ vector20<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -469,10 +469,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector21<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
+ , vector2<
+ vector21<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -491,10 +491,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector22<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>
+ , vector2<
+ vector22<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -513,10 +513,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector23<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>
+ , vector2<
+ vector23<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -535,10 +535,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector24<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>
+ , vector2<
+ vector24<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -557,10 +557,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector25<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>
+ , vector2<
+ vector25<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -579,10 +579,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector26<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>
+ , vector2<
+ vector26<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -601,10 +601,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector27<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>
+ , vector2<
+ vector27<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -623,10 +623,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector28<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>
+ , vector2<
+ vector28<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -645,10 +645,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector29<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector29<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -667,10 +667,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector30<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector30<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -689,10 +689,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector31<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector31<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of_40.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of_40.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of_40.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -17,10 +17,10 @@
             typedef
                 typename evaluator::impl<
                     Expr const&
- , fusion::vector2<
- fusion::vector1<const ::boost::phoenix::actor<Expr> *>
+ , vector2<
+ vector1<const ::boost::phoenix::actor<Expr> *> &
                       , default_actions
- >
+ > const &
                   , int
>::result_type
                 type;
@@ -31,7 +31,7 @@
             typedef
                 
                 typename mpl::eval_if<
- typename result_of::is_nullary<Expr>::type
+ result_of::is_nullary<Expr>
                   , nullary_actor_result<Expr>
                   , mpl::identity<detail::error_expecting_arguments>
>::type
@@ -51,10 +51,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector2<const ::boost::phoenix::actor<Expr> *, A0>
+ , vector2<
+ vector2<const ::boost::phoenix::actor<Expr> *, A0> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -73,10 +73,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector3<const ::boost::phoenix::actor<Expr> *, A0 , A1>
+ , vector2<
+ vector3<const ::boost::phoenix::actor<Expr> *, A0 , A1> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -95,10 +95,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector4<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2>
+ , vector2<
+ vector4<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -117,10 +117,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector5<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3>
+ , vector2<
+ vector5<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -139,10 +139,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector6<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4>
+ , vector2<
+ vector6<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -161,10 +161,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector7<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5>
+ , vector2<
+ vector7<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -183,10 +183,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector8<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6>
+ , vector2<
+ vector8<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -205,10 +205,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector9<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
+ , vector2<
+ vector9<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -227,10 +227,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector10<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
+ , vector2<
+ vector10<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -249,10 +249,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector11<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
+ , vector2<
+ vector11<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -271,10 +271,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector12<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
+ , vector2<
+ vector12<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -293,10 +293,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector13<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
+ , vector2<
+ vector13<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -315,10 +315,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector14<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
+ , vector2<
+ vector14<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -337,10 +337,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector15<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
+ , vector2<
+ vector15<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -359,10 +359,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector16<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
+ , vector2<
+ vector16<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -381,10 +381,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector17<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
+ , vector2<
+ vector17<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -403,10 +403,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector18<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
+ , vector2<
+ vector18<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -425,10 +425,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector19<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
+ , vector2<
+ vector19<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -447,10 +447,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector20<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
+ , vector2<
+ vector20<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -469,10 +469,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector21<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
+ , vector2<
+ vector21<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -491,10 +491,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector22<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>
+ , vector2<
+ vector22<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -513,10 +513,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector23<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>
+ , vector2<
+ vector23<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -535,10 +535,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector24<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>
+ , vector2<
+ vector24<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -557,10 +557,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector25<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>
+ , vector2<
+ vector25<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -579,10 +579,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector26<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>
+ , vector2<
+ vector26<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -601,10 +601,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector27<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>
+ , vector2<
+ vector27<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -623,10 +623,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector28<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>
+ , vector2<
+ vector28<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -645,10 +645,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector29<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector29<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -667,10 +667,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector30<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector30<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -689,10 +689,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector31<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector31<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -711,10 +711,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector32<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector32<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -733,10 +733,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector33<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector33<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -755,10 +755,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector34<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector34<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -777,10 +777,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector35<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector35<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -799,10 +799,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector36<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector36<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -821,10 +821,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector37<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector37<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -843,10 +843,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector38<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector38<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -865,10 +865,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector39<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector39<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -887,10 +887,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector40<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector40<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -909,10 +909,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector41<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector41<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of_50.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of_50.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/actor_result_of_50.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -17,10 +17,10 @@
             typedef
                 typename evaluator::impl<
                     Expr const&
- , fusion::vector2<
- fusion::vector1<const ::boost::phoenix::actor<Expr> *>
+ , vector2<
+ vector1<const ::boost::phoenix::actor<Expr> *> &
                       , default_actions
- >
+ > const &
                   , int
>::result_type
                 type;
@@ -31,7 +31,7 @@
             typedef
                 
                 typename mpl::eval_if<
- typename result_of::is_nullary<Expr>::type
+ result_of::is_nullary<Expr>
                   , nullary_actor_result<Expr>
                   , mpl::identity<detail::error_expecting_arguments>
>::type
@@ -51,10 +51,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector2<const ::boost::phoenix::actor<Expr> *, A0>
+ , vector2<
+ vector2<const ::boost::phoenix::actor<Expr> *, A0> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -73,10 +73,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector3<const ::boost::phoenix::actor<Expr> *, A0 , A1>
+ , vector2<
+ vector3<const ::boost::phoenix::actor<Expr> *, A0 , A1> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -95,10 +95,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector4<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2>
+ , vector2<
+ vector4<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -117,10 +117,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector5<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3>
+ , vector2<
+ vector5<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -139,10 +139,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector6<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4>
+ , vector2<
+ vector6<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -161,10 +161,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector7<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5>
+ , vector2<
+ vector7<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -183,10 +183,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector8<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6>
+ , vector2<
+ vector8<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -205,10 +205,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector9<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
+ , vector2<
+ vector9<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -227,10 +227,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector10<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
+ , vector2<
+ vector10<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -249,10 +249,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector11<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
+ , vector2<
+ vector11<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -271,10 +271,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector12<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
+ , vector2<
+ vector12<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -293,10 +293,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector13<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
+ , vector2<
+ vector13<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -315,10 +315,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector14<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
+ , vector2<
+ vector14<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -337,10 +337,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector15<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
+ , vector2<
+ vector15<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -359,10 +359,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector16<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
+ , vector2<
+ vector16<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -381,10 +381,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector17<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
+ , vector2<
+ vector17<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -403,10 +403,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector18<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
+ , vector2<
+ vector18<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -425,10 +425,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector19<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
+ , vector2<
+ vector19<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -447,10 +447,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector20<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
+ , vector2<
+ vector20<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -469,10 +469,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector21<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
+ , vector2<
+ vector21<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -491,10 +491,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector22<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>
+ , vector2<
+ vector22<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -513,10 +513,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector23<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>
+ , vector2<
+ vector23<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -535,10 +535,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector24<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>
+ , vector2<
+ vector24<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -557,10 +557,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector25<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>
+ , vector2<
+ vector25<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -579,10 +579,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector26<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>
+ , vector2<
+ vector26<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -601,10 +601,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector27<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>
+ , vector2<
+ vector27<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -623,10 +623,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector28<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>
+ , vector2<
+ vector28<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -645,10 +645,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector29<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector29<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -667,10 +667,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector30<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector30<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -689,10 +689,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector31<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector31<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -711,10 +711,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector32<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector32<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -733,10 +733,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector33<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector33<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -755,10 +755,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector34<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector34<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -777,10 +777,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector35<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector35<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -799,10 +799,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector36<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector36<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -821,10 +821,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector37<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector37<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -843,10 +843,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector38<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector38<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -865,10 +865,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector39<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector39<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -887,10 +887,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector40<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector40<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -909,10 +909,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector41<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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>
+ , vector2<
+ vector41<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -931,10 +931,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector42<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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 , A40>
+ , vector2<
+ vector42<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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 , A40> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -953,10 +953,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector43<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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 , A40 , A41>
+ , vector2<
+ vector43<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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 , A40 , A41> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -975,10 +975,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector44<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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 , A40 , A41 , A42>
+ , vector2<
+ vector44<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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 , A40 , A41 , A42> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -997,10 +997,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector45<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43>
+ , vector2<
+ vector45<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -1019,10 +1019,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector46<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44>
+ , vector2<
+ vector46<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -1041,10 +1041,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector47<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45>
+ , vector2<
+ vector47<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -1063,10 +1063,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector48<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46>
+ , vector2<
+ vector48<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -1085,10 +1085,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector49<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47>
+ , vector2<
+ vector49<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -1107,10 +1107,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector50<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48>
+ , vector2<
+ vector50<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;
@@ -1129,10 +1129,10 @@
                 typename phoenix::evaluator::
                     impl<
                         Expr const&
- , fusion::vector2<
- fusion::vector51<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 , A49>
+ , vector2<
+ vector51<const ::boost::phoenix::actor<Expr> *, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 , A49> &
                           , default_actions
- >
+ > const &
                       , int
>::result_type
                 type;

Added: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/call.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/call.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -0,0 +1,25 @@
+/*==============================================================================
+ Copyright (c) 2011 Hartmut Kaiser
+
+ 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(BOOST_PHOENIX_PREPROCESSED_CALL)
+#define BOOST_PHOENIX_PREPROCESSED_CALL
+
+#if BOOST_PHOENIX_LIMIT <= 10
+#include <boost/phoenix/core/detail/preprocessed/call_10.hpp>
+#elif BOOST_PHOENIX_LIMIT <= 20
+#include <boost/phoenix/core/detail/preprocessed/call_20.hpp>
+#elif BOOST_PHOENIX_LIMIT <= 30
+#include <boost/phoenix/core/detail/preprocessed/call_30.hpp>
+#elif BOOST_PHOENIX_LIMIT <= 40
+#include <boost/phoenix/core/detail/preprocessed/call_40.hpp>
+#elif BOOST_PHOENIX_LIMIT <= 50
+#include <boost/phoenix/core/detail/preprocessed/call_50.hpp>
+#else
+#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
+#endif
+
+#endif

Added: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/call_10.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/call_10.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -0,0 +1,321 @@
+/*==============================================================================
+ 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)
+==============================================================================*/
+
+ namespace detail
+ {
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 1>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 2>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 3>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 4>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 5>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 6>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 7>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 8>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 9>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 10>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e));
+ }
+ };
+ }

Added: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/call_20.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/call_20.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -0,0 +1,631 @@
+/*==============================================================================
+ 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)
+==============================================================================*/
+
+ namespace detail
+ {
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 1>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 2>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 3>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 4>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 5>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 6>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 7>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 8>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 9>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 10>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 11>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 12>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 13>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 14>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 15>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 16>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 17>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 18>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 19>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 20>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e));
+ }
+ };
+ }

Added: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/call_30.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/call_30.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -0,0 +1,941 @@
+/*==============================================================================
+ 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)
+==============================================================================*/
+
+ namespace detail
+ {
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 1>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 2>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 3>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 4>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 5>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 6>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 7>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 8>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 9>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 10>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 11>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 12>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 13>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 14>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 15>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 16>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 17>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 18>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 19>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 20>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 21>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 22>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 23>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 24>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 25>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 26>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 27>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 28>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 29>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 30>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e));
+ }
+ };
+ }

Added: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/call_40.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/call_40.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -0,0 +1,1251 @@
+/*==============================================================================
+ 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)
+==============================================================================*/
+
+ namespace detail
+ {
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 1>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 2>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 3>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 4>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 5>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 6>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 7>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 8>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 9>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 10>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 11>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 12>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 13>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 14>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 15>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 16>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 17>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 18>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 19>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 20>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 21>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 22>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 23>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 24>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 25>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 26>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 27>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 28>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 29>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 30>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 31>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 32>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 33>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 34>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 35>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 36>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34; typedef typename proto::result_of::child_c<Expr, 35>::type A35;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e) , proto::child_c<35>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 37>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34; typedef typename proto::result_of::child_c<Expr, 35>::type A35; typedef typename proto::result_of::child_c<Expr, 36>::type A36;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e) , proto::child_c<35>(e) , proto::child_c<36>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 38>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34; typedef typename proto::result_of::child_c<Expr, 35>::type A35; typedef typename proto::result_of::child_c<Expr, 36>::type A36; typedef typename proto::result_of::child_c<Expr, 37>::type A37;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e) , proto::child_c<35>(e) , proto::child_c<36>(e) , proto::child_c<37>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 39>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34; typedef typename proto::result_of::child_c<Expr, 35>::type A35; typedef typename proto::result_of::child_c<Expr, 36>::type A36; typedef typename proto::result_of::child_c<Expr, 37>::type A37; typedef typename proto::result_of::child_c<Expr, 38>::type A38;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e) , proto::child_c<35>(e) , proto::child_c<36>(e) , proto::child_c<37>(e) , proto::child_c<38>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 40>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34; typedef typename proto::result_of::child_c<Expr, 35>::type A35; typedef typename proto::result_of::child_c<Expr, 36>::type A36; typedef typename proto::result_of::child_c<Expr, 37>::type A37; typedef typename proto::result_of::child_c<Expr, 38>::type A38; typedef typename proto::result_of::child_c<Expr, 39>::type A39;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e) , proto::child_c<35>(e) , proto::child_c<36>(e) , proto::child_c<37>(e) , proto::child_c<38>(e) , proto::child_c<39>(e));
+ }
+ };
+ }

Added: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/call_50.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/preprocessed/call_50.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -0,0 +1,1561 @@
+/*==============================================================================
+ 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)
+==============================================================================*/
+
+ namespace detail
+ {
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 1>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 2>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 3>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 4>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 5>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 6>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 7>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 8>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 9>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 10>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 11>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 12>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 13>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 14>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 15>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 16>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 17>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 18>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 19>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 20>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 21>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 22>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 23>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 24>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 25>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 26>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 27>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 28>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 29>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 30>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 31>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 32>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 33>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 34>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 35>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 36>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34; typedef typename proto::result_of::child_c<Expr, 35>::type A35;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e) , proto::child_c<35>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 37>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34; typedef typename proto::result_of::child_c<Expr, 35>::type A35; typedef typename proto::result_of::child_c<Expr, 36>::type A36;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e) , proto::child_c<35>(e) , proto::child_c<36>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 38>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34; typedef typename proto::result_of::child_c<Expr, 35>::type A35; typedef typename proto::result_of::child_c<Expr, 36>::type A36; typedef typename proto::result_of::child_c<Expr, 37>::type A37;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e) , proto::child_c<35>(e) , proto::child_c<36>(e) , proto::child_c<37>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 39>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34; typedef typename proto::result_of::child_c<Expr, 35>::type A35; typedef typename proto::result_of::child_c<Expr, 36>::type A36; typedef typename proto::result_of::child_c<Expr, 37>::type A37; typedef typename proto::result_of::child_c<Expr, 38>::type A38;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e) , proto::child_c<35>(e) , proto::child_c<36>(e) , proto::child_c<37>(e) , proto::child_c<38>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 40>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34; typedef typename proto::result_of::child_c<Expr, 35>::type A35; typedef typename proto::result_of::child_c<Expr, 36>::type A36; typedef typename proto::result_of::child_c<Expr, 37>::type A37; typedef typename proto::result_of::child_c<Expr, 38>::type A38; typedef typename proto::result_of::child_c<Expr, 39>::type A39;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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
+ 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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e) , proto::child_c<35>(e) , proto::child_c<36>(e) , proto::child_c<37>(e) , proto::child_c<38>(e) , proto::child_c<39>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 41>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34; typedef typename proto::result_of::child_c<Expr, 35>::type A35; typedef typename proto::result_of::child_c<Expr, 36>::type A36; typedef typename proto::result_of::child_c<Expr, 37>::type A37; typedef typename proto::result_of::child_c<Expr, 38>::type A38; typedef typename proto::result_of::child_c<Expr, 39>::type A39; typedef typename proto::result_of::child_c<Expr, 40>::type A40;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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 , A40)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e) , proto::child_c<35>(e) , proto::child_c<36>(e) , proto::child_c<37>(e) , proto::child_c<38>(e) , proto::child_c<39>(e) , proto::child_c<40>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 42>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34; typedef typename proto::result_of::child_c<Expr, 35>::type A35; typedef typename proto::result_of::child_c<Expr, 36>::type A36; typedef typename proto::result_of::child_c<Expr, 37>::type A37; typedef typename proto::result_of::child_c<Expr, 38>::type A38; typedef typename proto::result_of::child_c<Expr, 39>::type A39; typedef typename proto::result_of::child_c<Expr, 40>::type A40; typedef typename proto::result_of::child_c<Expr, 41>::type A41;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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 , A40 , A41)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e) , proto::child_c<35>(e) , proto::child_c<36>(e) , proto::child_c<37>(e) , proto::child_c<38>(e) , proto::child_c<39>(e) , proto::child_c<40>(e) , proto::child_c<41>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 43>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34; typedef typename proto::result_of::child_c<Expr, 35>::type A35; typedef typename proto::result_of::child_c<Expr, 36>::type A36; typedef typename proto::result_of::child_c<Expr, 37>::type A37; typedef typename proto::result_of::child_c<Expr, 38>::type A38; typedef typename proto::result_of::child_c<Expr, 39>::type A39; typedef typename proto::result_of::child_c<Expr, 40>::type A40; typedef typename proto::result_of::child_c<Expr, 41>::type A41; typedef typename proto::result_of::child_c<Expr, 42>::type A42;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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 , A40 , A41 , A42)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e) , proto::child_c<35>(e) , proto::child_c<36>(e) , proto::child_c<37>(e) , proto::child_c<38>(e) , proto::child_c<39>(e) , proto::child_c<40>(e) , proto::child_c<41>(e) , pr
oto::child_c<42>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 44>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34; typedef typename proto::result_of::child_c<Expr, 35>::type A35; typedef typename proto::result_of::child_c<Expr, 36>::type A36; typedef typename proto::result_of::child_c<Expr, 37>::type A37; typedef typename proto::result_of::child_c<Expr, 38>::type A38; typedef typename proto::result_of::child_c<Expr, 39>::type A39; typedef typename proto::result_of::child_c<Expr, 40>::type A40; typedef typename proto::result_of::child_c<Expr, 41>::type A41; typedef typename proto::result_of::child_c<Expr, 42>::type A42; typedef typename proto::result_of::child_c<Expr, 43>::type A43;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e) , proto::child_c<35>(e) , proto::child_c<36>(e) , proto::child_c<37>(e) , proto::child_c<38>(e) , proto::child_c<39>(e) , proto::child_c<40>(e) , proto::child_c<41>(e) , pr
oto::child_c<42>(e) , proto::child_c<43>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 45>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34; typedef typename proto::result_of::child_c<Expr, 35>::type A35; typedef typename proto::result_of::child_c<Expr, 36>::type A36; typedef typename proto::result_of::child_c<Expr, 37>::type A37; typedef typename proto::result_of::child_c<Expr, 38>::type A38; typedef typename proto::result_of::child_c<Expr, 39>::type A39; typedef typename proto::result_of::child_c<Expr, 40>::type A40; typedef typename proto::result_of::child_c<Expr, 41>::type A41; typedef typename proto::result_of::child_c<Expr, 42>::type A42; typedef typename proto::result_of::child_c<Expr, 43>::type A43; typedef typename proto::result_of::child_c<Expr, 44>::type A44;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e) , proto::child_c<35>(e) , proto::child_c<36>(e) , proto::child_c<37>(e) , proto::child_c<38>(e) , proto::child_c<39>(e) , proto::child_c<40>(e) , proto::child_c<41>(e) , pr
oto::child_c<42>(e) , proto::child_c<43>(e) , proto::child_c<44>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 46>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34; typedef typename proto::result_of::child_c<Expr, 35>::type A35; typedef typename proto::result_of::child_c<Expr, 36>::type A36; typedef typename proto::result_of::child_c<Expr, 37>::type A37; typedef typename proto::result_of::child_c<Expr, 38>::type A38; typedef typename proto::result_of::child_c<Expr, 39>::type A39; typedef typename proto::result_of::child_c<Expr, 40>::type A40; typedef typename proto::result_of::child_c<Expr, 41>::type A41; typedef typename proto::result_of::child_c<Expr, 42>::type A42; typedef typename proto::result_of::child_c<Expr, 43>::type A43; typedef typename proto::result_of::child_c<Expr, 44>::type A44; typedef typename proto::result_of::child_c<Expr, 45>::type A45;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e) , proto::child_c<35>(e) , proto::child_c<36>(e) , proto::child_c<37>(e) , proto::child_c<38>(e) , proto::child_c<39>(e) , proto::child_c<40>(e) , proto::child_c<41>(e) , pr
oto::child_c<42>(e) , proto::child_c<43>(e) , proto::child_c<44>(e) , proto::child_c<45>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 47>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34; typedef typename proto::result_of::child_c<Expr, 35>::type A35; typedef typename proto::result_of::child_c<Expr, 36>::type A36; typedef typename proto::result_of::child_c<Expr, 37>::type A37; typedef typename proto::result_of::child_c<Expr, 38>::type A38; typedef typename proto::result_of::child_c<Expr, 39>::type A39; typedef typename proto::result_of::child_c<Expr, 40>::type A40; typedef typename proto::result_of::child_c<Expr, 41>::type A41; typedef typename proto::result_of::child_c<Expr, 42>::type A42; typedef typename proto::result_of::child_c<Expr, 43>::type A43; typedef typename proto::result_of::child_c<Expr, 44>::type A44; typedef typename proto::result_of::child_c<Expr, 45>::type A45; typedef typename proto::result_of::child_c<Expr, 46>::type A46;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e) , proto::child_c<35>(e) , proto::child_c<36>(e) , proto::child_c<37>(e) , proto::child_c<38>(e) , proto::child_c<39>(e) , proto::child_c<40>(e) , proto::child_c<41>(e) , pr
oto::child_c<42>(e) , proto::child_c<43>(e) , proto::child_c<44>(e) , proto::child_c<45>(e) , proto::child_c<46>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 48>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34; typedef typename proto::result_of::child_c<Expr, 35>::type A35; typedef typename proto::result_of::child_c<Expr, 36>::type A36; typedef typename proto::result_of::child_c<Expr, 37>::type A37; typedef typename proto::result_of::child_c<Expr, 38>::type A38; typedef typename proto::result_of::child_c<Expr, 39>::type A39; typedef typename proto::result_of::child_c<Expr, 40>::type A40; typedef typename proto::result_of::child_c<Expr, 41>::type A41; typedef typename proto::result_of::child_c<Expr, 42>::type A42; typedef typename proto::result_of::child_c<Expr, 43>::type A43; typedef typename proto::result_of::child_c<Expr, 44>::type A44; typedef typename proto::result_of::child_c<Expr, 45>::type A45; typedef typename proto::result_of::child_c<Expr, 46>::type A46; typedef typename proto::result_of::child_c<Expr, 47>::type A47;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e) , proto::child_c<35>(e) , proto::child_c<36>(e) , proto::child_c<37>(e) , proto::child_c<38>(e) , proto::child_c<39>(e) , proto::child_c<40>(e) , proto::child_c<41>(e) , pr
oto::child_c<42>(e) , proto::child_c<43>(e) , proto::child_c<44>(e) , proto::child_c<45>(e) , proto::child_c<46>(e) , proto::child_c<47>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 49>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34; typedef typename proto::result_of::child_c<Expr, 35>::type A35; typedef typename proto::result_of::child_c<Expr, 36>::type A36; typedef typename proto::result_of::child_c<Expr, 37>::type A37; typedef typename proto::result_of::child_c<Expr, 38>::type A38; typedef typename proto::result_of::child_c<Expr, 39>::type A39; typedef typename proto::result_of::child_c<Expr, 40>::type A40; typedef typename proto::result_of::child_c<Expr, 41>::type A41; typedef typename proto::result_of::child_c<Expr, 42>::type A42; typedef typename proto::result_of::child_c<Expr, 43>::type A43; typedef typename proto::result_of::child_c<Expr, 44>::type A44; typedef typename proto::result_of::child_c<Expr, 45>::type A45; typedef typename proto::result_of::child_c<Expr, 46>::type A46; typedef typename proto::result_of::child_c<Expr, 47>::type A47; type
def typename proto::result_of::child_c<Expr, 48>::type A48;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e) , proto::child_c<35>(e) , proto::child_c<36>(e) , proto::child_c<37>(e) , proto::child_c<38>(e) , proto::child_c<39>(e) , proto::child_c<40>(e) , proto::child_c<41>(e) , pr
oto::child_c<42>(e) , proto::child_c<43>(e) , proto::child_c<44>(e) , proto::child_c<45>(e) , proto::child_c<46>(e) , proto::child_c<47>(e) , proto::child_c<48>(e));
+ }
+ };
+
+
+
+
+
+
+
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, 50>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename boost::phoenix::result_of::context<State, Data>::type
+ context_type;
+ typedef typename proto::result_of::child_c<Expr, 0>::type A0; typedef typename proto::result_of::child_c<Expr, 1>::type A1; typedef typename proto::result_of::child_c<Expr, 2>::type A2; typedef typename proto::result_of::child_c<Expr, 3>::type A3; typedef typename proto::result_of::child_c<Expr, 4>::type A4; typedef typename proto::result_of::child_c<Expr, 5>::type A5; typedef typename proto::result_of::child_c<Expr, 6>::type A6; typedef typename proto::result_of::child_c<Expr, 7>::type A7; typedef typename proto::result_of::child_c<Expr, 8>::type A8; typedef typename proto::result_of::child_c<Expr, 9>::type A9; typedef typename proto::result_of::child_c<Expr, 10>::type A10; typedef typename proto::result_of::child_c<Expr, 11>::type A11; typedef typename proto::result_of::child_c<Expr, 12>::type A12; typedef typename proto::result_of::child_c<Expr, 13>::type A13; typedef typename proto::result_of::child_c<Expr, 14>::type A14; typedef typename proto::result_of::child_c<Expr, 15>::type A15; typede
f typename proto::result_of::child_c<Expr, 16>::type A16; typedef typename proto::result_of::child_c<Expr, 17>::type A17; typedef typename proto::result_of::child_c<Expr, 18>::type A18; typedef typename proto::result_of::child_c<Expr, 19>::type A19; typedef typename proto::result_of::child_c<Expr, 20>::type A20; typedef typename proto::result_of::child_c<Expr, 21>::type A21; typedef typename proto::result_of::child_c<Expr, 22>::type A22; typedef typename proto::result_of::child_c<Expr, 23>::type A23; typedef typename proto::result_of::child_c<Expr, 24>::type A24; typedef typename proto::result_of::child_c<Expr, 25>::type A25; typedef typename proto::result_of::child_c<Expr, 26>::type A26; typedef typename proto::result_of::child_c<Expr, 27>::type A27; typedef typename proto::result_of::child_c<Expr, 28>::type A28; typedef typename proto::result_of::child_c<Expr, 29>::type A29; typedef typename proto::result_of::child_c<Expr, 30>::type A30; typedef typename proto::result_of::child_c<Expr, 31>::type A31; typed
ef typename proto::result_of::child_c<Expr, 32>::type A32; typedef typename proto::result_of::child_c<Expr, 33>::type A33; typedef typename proto::result_of::child_c<Expr, 34>::type A34; typedef typename proto::result_of::child_c<Expr, 35>::type A35; typedef typename proto::result_of::child_c<Expr, 36>::type A36; typedef typename proto::result_of::child_c<Expr, 37>::type A37; typedef typename proto::result_of::child_c<Expr, 38>::type A38; typedef typename proto::result_of::child_c<Expr, 39>::type A39; typedef typename proto::result_of::child_c<Expr, 40>::type A40; typedef typename proto::result_of::child_c<Expr, 41>::type A41; typedef typename proto::result_of::child_c<Expr, 42>::type A42; typedef typename proto::result_of::child_c<Expr, 43>::type A43; typedef typename proto::result_of::child_c<Expr, 44>::type A44; typedef typename proto::result_of::child_c<Expr, 45>::type A45; typedef typename proto::result_of::child_c<Expr, 46>::type A46; typedef typename proto::result_of::child_c<Expr, 47>::type A47; type
def typename proto::result_of::child_c<Expr, 48>::type A48; typedef typename proto::result_of::child_c<Expr, 49>::type A49;
+ typedef
+ typename boost::result_of<
+ Fun(context_type, A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 , A49)
+ >::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()(boost::phoenix::context(s, d)
+ , proto::child_c<0>(e) , proto::child_c<1>(e) , proto::child_c<2>(e) , proto::child_c<3>(e) , proto::child_c<4>(e) , proto::child_c<5>(e) , proto::child_c<6>(e) , proto::child_c<7>(e) , proto::child_c<8>(e) , proto::child_c<9>(e) , proto::child_c<10>(e) , proto::child_c<11>(e) , proto::child_c<12>(e) , proto::child_c<13>(e) , proto::child_c<14>(e) , proto::child_c<15>(e) , proto::child_c<16>(e) , proto::child_c<17>(e) , proto::child_c<18>(e) , proto::child_c<19>(e) , proto::child_c<20>(e) , proto::child_c<21>(e) , proto::child_c<22>(e) , proto::child_c<23>(e) , proto::child_c<24>(e) , proto::child_c<25>(e) , proto::child_c<26>(e) , proto::child_c<27>(e) , proto::child_c<28>(e) , proto::child_c<29>(e) , proto::child_c<30>(e) , proto::child_c<31>(e) , proto::child_c<32>(e) , proto::child_c<33>(e) , proto::child_c<34>(e) , proto::child_c<35>(e) , proto::child_c<36>(e) , proto::child_c<37>(e) , proto::child_c<38>(e) , proto::child_c<39>(e) , proto::child_c<40>(e) , proto::child_c<41>(e) , pr
oto::child_c<42>(e) , proto::child_c<43>(e) , proto::child_c<44>(e) , proto::child_c<45>(e) , proto::child_c<46>(e) , proto::child_c<47>(e) , proto::child_c<48>(e) , proto::child_c<49>(e));
+ }
+ };
+ }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/domain.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/domain.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/domain.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_DOMAIN_HPP
-#define PHOENIX_CORE_DOMAIN_HPP
+#ifndef BOOST_PHOENIX_CORE_DOMAIN_HPP
+#define BOOST_PHOENIX_CORE_DOMAIN_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/proto/domain.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/environment.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/environment.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/environment.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_ENVIRONMENT_HPP
-#define PHOENIX_CORE_ENVIRONMENT_HPP
+#ifndef BOOST_PHOENIX_CORE_ENVIRONMENT_HPP
+#define BOOST_PHOENIX_CORE_ENVIRONMENT_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/fusion/sequence/intrinsic/at.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/expression.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/expression.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/expression.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,7 +1,7 @@
 
-#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_CORE_EXPRESSION_HPP
-#define PHOENIX_CORE_EXPRESSION_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_CORE_EXPRESSION_HPP
+#define BOOST_PHOENIX_CORE_EXPRESSION_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/fusion/sequence/intrinsic/at.hpp>
@@ -17,10 +17,10 @@
 #endif
 #else
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_CORE_EXPRESSION_HPP
-#define PHOENIX_CORE_EXPRESSION_HPP
+#ifndef BOOST_PHOENIX_CORE_EXPRESSION_HPP
+#define BOOST_PHOENIX_CORE_EXPRESSION_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/fusion/sequence/intrinsic/at.hpp>
@@ -31,8 +31,8 @@
 #include <boost/proto/make_expr.hpp>
 #include <boost/proto/transform/pass_through.hpp>
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/expression_" PHOENIX_LIMIT_STR ".hpp")
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/expression_" BOOST_PHOENIX_LIMIT_STR ".hpp")
 #endif
 
 /*=============================================================================
@@ -44,7 +44,7 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(preserve: 1)
 #endif
 
@@ -55,62 +55,62 @@
     template <
         template <typename> class Actor
       , typename Tag
- , PHOENIX_typename_A_void(PHOENIX_COMPOSITE_LIMIT)
+ , BOOST_PHOENIX_typename_A_void(BOOST_PHOENIX_COMPOSITE_LIMIT)
       , typename Dummy = void>
     struct expr_ext;
 
     template <
         typename Tag
- , PHOENIX_typename_A_void(PHOENIX_COMPOSITE_LIMIT)
+ , BOOST_PHOENIX_typename_A_void(BOOST_PHOENIX_COMPOSITE_LIMIT)
       , typename Dummy = void
>
- struct expr : expr_ext<actor, Tag, PHOENIX_A(PHOENIX_COMPOSITE_LIMIT)> {};
+ struct expr : expr_ext<actor, Tag, BOOST_PHOENIX_A(BOOST_PHOENIX_COMPOSITE_LIMIT)> {};
 
     struct default_domain_with_basic_expr
         : proto::domain<proto::use_basic_expr<proto::default_generator> >
     {};
 
-#define PHOENIX_ITERATION_PARAMS \
- (3, (1, PHOENIX_COMPOSITE_LIMIT, \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (1, BOOST_PHOENIX_COMPOSITE_LIMIT, \
     <boost/phoenix/core/expression.hpp>)) \
 /**/
- #include PHOENIX_ITERATE()
+ #include BOOST_PHOENIX_ITERATE()
 
 }}
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
 #endif
 
 #else
- template <template <typename> class Actor, typename Tag, PHOENIX_typename_A>
- struct expr_ext<Actor, Tag, PHOENIX_A>
- : proto::transform<expr_ext<Actor, Tag, PHOENIX_A>, int>
+ template <template <typename> class Actor, typename Tag, BOOST_PHOENIX_typename_A>
+ struct expr_ext<Actor, Tag, BOOST_PHOENIX_A>
+ : proto::transform<expr_ext<Actor, Tag, BOOST_PHOENIX_A>, int>
     {
         typedef
             typename proto::result_of::make_expr<
                 Tag
               , default_domain_with_basic_expr
- , PHOENIX_A
+ , BOOST_PHOENIX_A
>::type
             base_type;
 
         typedef Actor<base_type> type;
 
         typedef
- typename proto::nary_expr<Tag, PHOENIX_A>::proto_grammar
+ typename proto::nary_expr<Tag, BOOST_PHOENIX_A>::proto_grammar
             proto_grammar;
         
- static type make(PHOENIX_A_a)
+ static type make(BOOST_PHOENIX_A_a)
         {
             actor<base_type> const e =
                 {
                     proto::make_expr<
                         Tag
                       , default_domain_with_basic_expr
- >(PHOENIX_a)
+ >(BOOST_PHOENIX_a)
                 };
             return e;
         }
@@ -124,7 +124,7 @@
     #define BOOST_PHOENIX_ENUM_CHILDREN(_, N, __) \
         typedef BOOST_PP_CAT(A, N) BOOST_PP_CAT(proto_child, N); \
     /**/
- BOOST_PP_REPEAT(PHOENIX_ITERATION, BOOST_PHOENIX_ENUM_CHILDREN, _)
+ BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, BOOST_PHOENIX_ENUM_CHILDREN, _)
     #undef BOOST_PHOENIX_ENUM_CHILDREN
     };
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/function_equal.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/function_equal.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/function_equal.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_FUNCTION_EQUAL_HPP
-#define PHOENIX_CORE_FUNCTION_EQUAL_HPP
+#ifndef BOOST_PHOENIX_CORE_FUNCTION_EQUAL_HPP
+#define BOOST_PHOENIX_CORE_FUNCTION_EQUAL_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/is_placeholder.hpp>
@@ -100,14 +100,14 @@
             }
 
             private:
- #define PHOENIX_FUNCTION_EQUAL_R(Z, N, DATA) \
+ #define BOOST_PHOENIX_FUNCTION_EQUAL_R(Z, N, DATA) \
                     && function_equal_()( \
                             proto::child_c< N >(e1) \
                           , proto::child_c< N >(e2) \
                         ) \
                 /**/
 
- #define PHOENIX_FUNCTION_EQUAL(Z, N, DATA) \
+ #define BOOST_PHOENIX_FUNCTION_EQUAL(Z, N, DATA) \
                     template <typename Expr1> \
                     result_type \
                     evaluate( \
@@ -124,7 +124,7 @@
                             BOOST_PP_REPEAT_FROM_TO( \
                                 1 \
                               , N \
- , PHOENIX_FUNCTION_EQUAL_R \
+ , BOOST_PHOENIX_FUNCTION_EQUAL_R \
                               , _ \
                             ); \
                     } \
@@ -133,11 +133,11 @@
                 BOOST_PP_REPEAT_FROM_TO(
                     1
                   , BOOST_PROTO_MAX_ARITY
- , PHOENIX_FUNCTION_EQUAL
+ , BOOST_PHOENIX_FUNCTION_EQUAL
                   , _
                 )
- #undef PHOENIX_FUNCTION_EQUAL_R
- #undef PHOENIX_FUNCTION_EQUAL
+ #undef BOOST_PHOENIX_FUNCTION_EQUAL_R
+ #undef BOOST_PHOENIX_FUNCTION_EQUAL
         };
     }
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/is_actor.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/is_actor.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/is_actor.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -4,8 +4,8 @@
     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_IS_ACTOR_HPP
-#define PHOENIX_CORE_IS_ACTOR_HPP
+#ifndef BOOST_PHOENIX_CORE_IS_ACTOR_HPP
+#define BOOST_PHOENIX_CORE_IS_ACTOR_HPP
 
 #include <boost/mpl/bool.hpp>
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/is_nullary.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/is_nullary.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/is_nullary.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -6,8 +6,8 @@
     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_IS_NULLARY_HPP
-#define PHOENIX_CORE_IS_NULLARY_HPP
+#ifndef BOOST_PHOENIX_CORE_IS_NULLARY_HPP
+#define BOOST_PHOENIX_CORE_IS_NULLARY_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/environment.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/limits.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/limits.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/limits.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -4,8 +4,8 @@
     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_LIMITS_HPP
-#define PHOENIX_CORE_LIMITS_HPP
+#ifndef BOOST_PHOENIX_CORE_LIMITS_HPP
+#define BOOST_PHOENIX_CORE_LIMITS_HPP
 
 #include <boost/preprocessor/arithmetic/add.hpp>
 #include <boost/preprocessor/inc.hpp>
@@ -13,100 +13,100 @@
 #include <boost/preprocessor/stringize.hpp>
 #include <boost/phoenix/support/preprocessor/round.hpp>
 
-#if !defined(PHOENIX_LIMIT)
-# define PHOENIX_LIMIT 10
-#elif (PHOENIX_LIMIT < 5)
+#if !defined(BOOST_PHOENIX_LIMIT)
+# define BOOST_PHOENIX_LIMIT 10
+#elif (BOOST_PHOENIX_LIMIT < 5)
 # error "PHOENIX_LIMIT is set too low"
 #endif
 
-#define PHOENIX_LIMIT_STR BOOST_PP_STRINGIZE(BOOST_PHOENIX_PP_ROUND_UP(PHOENIX_LIMIT))
+#define BOOST_PHOENIX_LIMIT_STR BOOST_PP_STRINGIZE(BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT))
 
-#if !defined(PHOENIX_ARG_LIMIT)
-# define PHOENIX_ARG_LIMIT BOOST_PHOENIX_PP_ROUND_UP(PHOENIX_LIMIT)
-#elif (PHOENIX_ARG_LIMIT < 5)
-# error "PHOENIX_ARG_LIMIT is set too low"
-#elif PHOENIX_ARG_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(PHOENIX_LIMIT) && !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-# define PHOENIX_DONT_USE_PREPROCESSED_FILES
-#endif
-
-#if !defined(PHOENIX_ACTOR_LIMIT)
-# define PHOENIX_ACTOR_LIMIT BOOST_PHOENIX_PP_ROUND_UP(PHOENIX_LIMIT)
-#elif (PHOENIX_ACTOR_LIMIT > PHOENIX_ARG_LIMIT)
-# error "PHOENIX_ACTOR_LIMIT > PHOENIX_ARG_LIMIT"
-#elif (PHOENIX_ACTOR_LIMIT < 3)
-# error "PHOENIX_ACTOR_LIMIT is set too low"
-#elif PHOENIX_ACTOR_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(PHOENIX_LIMIT) && !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-# define PHOENIX_DONT_USE_PREPROCESSED_FILES
-#endif
-
-#if !defined(PHOENIX_PERFECT_FORWARD_LIMIT)
-# define PHOENIX_PERFECT_FORWARD_LIMIT 3
-#elif (PHOENIX_PERFECT_FORWARD_LIMIT > PHOENIX_ACTOR_LIMIT)
-# error "PHOENIX_PERFECT_FORWARD_LIMIT > PHOENIX_ACTOR_LIMIT"
-#elif (PHOENIX_PERFECT_FORWARD_LIMIT < 3)
-# error "PHOENIX_PERFECT_FORWARD_LIMIT is set too low"
-#elif PHOENIX_PERFECT_FORWARD_LIMIT != 3 && !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-# define PHOENIX_DONT_USE_PREPROCESSED_FILES
-#endif
-
-#if !defined(PHOENIX_COMPOSITE_LIMIT)
-# define PHOENIX_COMPOSITE_LIMIT BOOST_PHOENIX_PP_ROUND_UP(PHOENIX_LIMIT)
-#elif (PHOENIX_COMPOSITE_LIMIT < 5)
-# error "PHOENIX_COMPOSITE_LIMIT is set too low"
-#elif PHOENIX_COMPOSITE_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(PHOENIX_LIMIT) && !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-# define PHOENIX_DONT_USE_PREPROCESSED_FILES
-#endif
-
-#if !defined(PHOENIX_MEMBER_LIMIT)
-# define PHOENIX_MEMBER_LIMIT BOOST_PP_DEC(PHOENIX_COMPOSITE_LIMIT)
-#elif (PHOENIX_MEMBER_LIMIT > PHOENIX_COMPOSITE_LIMIT)
-# error "PHOENIX_MEMBER_LIMIT > PHOENIX_COMPOSITE_LIMIT"
-#elif (PHOENIX_MEMBER_LIMIT < 3)
-# error "PHOENIX_MEMBER_LIMIT is set too low"
-#elif PHOENIX_MEMBER_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(PHOENIX_LIMIT) && !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-# define PHOENIX_DONT_USE_PREPROCESSED_FILES
-#endif
-
-#if !defined(PHOENIX_CATCH_LIMIT)
-# define PHOENIX_CATCH_LIMIT PHOENIX_COMPOSITE_LIMIT
-#elif (PHOENIX_CATCH_LIMIT < 1)
-# error "PHOENIX_CATCH_LIMIT is set too low"
-#elif PHOENIX_CATCH_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(PHOENIX_LIMIT) && !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-# define PHOENIX_DONT_USE_PREPROCESSED_FILES
-#endif
-
-#if !defined(PHOENIX_DYNAMIC_LIMIT)
-# define PHOENIX_DYNAMIC_LIMIT BOOST_PHOENIX_PP_ROUND_UP(PHOENIX_LIMIT)
-#elif (PHOENIX_DYNAMIC_LIMIT < 1)
-# error "PHOENIX_DYNAMIC_LIMIT is set too low"
-#elif PHOENIX_DYNAMIC_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(PHOENIX_LIMIT) && !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-# define PHOENIX_DONT_USE_PREPROCESSED_FILES
-#endif
-
-#if !defined(PHOENIX_LOCAL_LIMIT)
-# define PHOENIX_LOCAL_LIMIT BOOST_PHOENIX_PP_ROUND_UP(PHOENIX_LIMIT)
-#elif (PHOENIX_LOCAL_LIMIT < 3)
-# error "PHOENIX_LOCAL_LIMIT is set too low"
-#elif PHOENIX_LOCAL_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(PHOENIX_LIMIT) && !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-# define PHOENIX_DONT_USE_PREPROCESSED_FILES
+#if !defined(BOOST_PHOENIX_ARG_LIMIT)
+# define BOOST_PHOENIX_ARG_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
+#elif (BOOST_PHOENIX_ARG_LIMIT < 5)
+# error "BOOST_PHOENIX_ARG_LIMIT is set too low"
+#elif BOOST_PHOENIX_ARG_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+# define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif
+
+#if !defined(BOOST_PHOENIX_ACTOR_LIMIT)
+# define BOOST_PHOENIX_ACTOR_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
+#elif (BOOST_PHOENIX_ACTOR_LIMIT > BOOST_PHOENIX_ARG_LIMIT)
+# error "BOOST_PHOENIX_ACTOR_LIMIT > BOOST_PHOENIX_ARG_LIMIT"
+#elif (BOOST_PHOENIX_ACTOR_LIMIT < 3)
+# error "BOOST_PHOENIX_ACTOR_LIMIT is set too low"
+#elif BOOST_PHOENIX_ACTOR_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+# define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif
+
+#if !defined(BOOST_PHOENIX_PERFECT_FORWARD_LIMIT)
+# define BOOST_PHOENIX_PERFECT_FORWARD_LIMIT 3
+#elif (BOOST_PHOENIX_PERFECT_FORWARD_LIMIT > BOOST_PHOENIX_ACTOR_LIMIT)
+# error "BOOST_PHOENIX_PERFECT_FORWARD_LIMIT > BOOST_PHOENIX_ACTOR_LIMIT"
+#elif (BOOST_PHOENIX_PERFECT_FORWARD_LIMIT < 3)
+# error "BOOST_PHOENIX_PERFECT_FORWARD_LIMIT is set too low"
+#elif BOOST_PHOENIX_PERFECT_FORWARD_LIMIT != 3 && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+# define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif
+
+#if !defined(BOOST_PHOENIX_COMPOSITE_LIMIT)
+# define BOOST_PHOENIX_COMPOSITE_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
+#elif (BOOST_PHOENIX_COMPOSITE_LIMIT < 5)
+# error "BOOST_PHOENIX_COMPOSITE_LIMIT is set too low"
+#elif BOOST_PHOENIX_COMPOSITE_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+# define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif
+
+#if !defined(BOOST_PHOENIX_MEMBER_LIMIT)
+# define BOOST_PHOENIX_MEMBER_LIMIT BOOST_PP_DEC(BOOST_PHOENIX_COMPOSITE_LIMIT)
+#elif (BOOST_PHOENIX_MEMBER_LIMIT > BOOST_PHOENIX_COMPOSITE_LIMIT)
+# error "BOOST_PHOENIX_MEMBER_LIMIT > BOOST_PHOENIX_COMPOSITE_LIMIT"
+#elif (BOOST_PHOENIX_MEMBER_LIMIT < 3)
+# error "BOOST_PHOENIX_MEMBER_LIMIT is set too low"
+#elif BOOST_PHOENIX_MEMBER_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+# define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif
+
+#if !defined(BOOST_PHOENIX_CATCH_LIMIT)
+# define BOOST_PHOENIX_CATCH_LIMIT BOOST_PHOENIX_COMPOSITE_LIMIT
+#elif (BOOST_PHOENIX_CATCH_LIMIT < 1)
+# error "BOOST_PHOENIX_CATCH_LIMIT is set too low"
+#elif BOOST_PHOENIX_CATCH_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+# define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif
+
+#if !defined(BOOST_PHOENIX_DYNAMIC_LIMIT)
+# define BOOST_PHOENIX_DYNAMIC_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
+#elif (BOOST_PHOENIX_DYNAMIC_LIMIT < 1)
+# error "BOOST_PHOENIX_DYNAMIC_LIMIT is set too low"
+#elif BOOST_PHOENIX_DYNAMIC_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+# define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif
+
+#if !defined(BOOST_PHOENIX_LOCAL_LIMIT)
+# define BOOST_PHOENIX_LOCAL_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
+#elif (BOOST_PHOENIX_LOCAL_LIMIT < 3)
+# error "BOOST_PHOENIX_LOCAL_LIMIT is set too low"
+#elif BOOST_PHOENIX_LOCAL_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+# define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
 #endif
 
 #if !defined(BOOST_PROTO_MAX_ARITY)
-# define BOOST_PROTO_MAX_ARITY BOOST_PP_INC(PHOENIX_COMPOSITE_LIMIT)
+# define BOOST_PROTO_MAX_ARITY BOOST_PP_INC(BOOST_PHOENIX_COMPOSITE_LIMIT)
 # if defined(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
 # undef BOOST_MPL_LIMIT_METAFUNCTION_ARITY
 # endif
 # define BOOST_MPL_LIMIT_METAFUNCTION_ARITY BOOST_PP_INC(BOOST_PROTO_MAX_ARITY)
 //# define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 //# endif
-#elif (BOOST_PROTO_MAX_ARITY < PHOENIX_COMPOSE_LIMIT)
-# error "BOOST_PROTO_MAX_ARITY < PHOENIX_COMPOSE_LIMIT"
+#elif (BOOST_PROTO_MAX_ARITY < BOOST_PHOENIX_COMPOSE_LIMIT)
+# error "BOOST_PROTO_MAX_ARITY < BOOST_PHOENIX_COMPOSITE_LIMIT"
 #endif
 
 #if !defined(BOOST_PROTO_MAX_LOGICAL_ARITY)
-# define BOOST_PROTO_MAX_LOGICAL_ARITY PHOENIX_COMPOSITE_LIMIT
-#elif BOOST_PROTO_MAX_LOGICAL_ARITY < PHOENIX_COMPOSITE_LIMIT
-# error "BOOST_PROTO_MAX_LOGICAL_ARITY < PHOENIX_COMPOSITE_LIMIT"
+# define BOOST_PROTO_MAX_LOGICAL_ARITY BOOST_PHOENIX_COMPOSITE_LIMIT
+#elif BOOST_PROTO_MAX_LOGICAL_ARITY < BOOST_PHOENIX_COMPOSITE_LIMIT
+# error "BOOST_PROTO_MAX_LOGICAL_ARITY < BOOST_PHOENIX_COMPOSITE_LIMIT"
 #endif
 
 // this include will set the limit for the proto expression arity

Deleted: sandbox/SOC/2010/phoenix3/boost/phoenix/core/mem_obj_ptr.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/mem_obj_ptr.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
+++ (empty file)
@@ -1,173 +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)
-==============================================================================*/
-#ifndef PHOENIX_CORE_MEM_OBJ_PTR_HPP
-#define PHOENIX_CORE_MEM_OBJ_PTR_HPP
-
-#include <boost/phoenix/core/meta_grammar.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/type_traits/remove_pointer.hpp>
-#include <boost/type_traits/remove_reference.hpp>
-
-#include <boost/type_traits/remove_reference.hpp>
-
-
-namespace boost { namespace phoenix
-{
- ////////////////////////////////////////////////////////////////////////////
- //
- // mem_obj_ptr
- //
- // Function to evaluate member object pointers
- // To be used in bind and operator->*
- //
- ////////////////////////////////////////////////////////////////////////////
-
- /* FIXME
- namespace meta
- {
- template <typename T>
- struct member_type;
-
- template <typename Class, typename MemberType>
- struct member_type<MemberType (Class::*)>
- {
- typedef MemberType type;
- };
-
- template <typename Class, typename MemberType>
- struct member_type<MemberType (Class::*&)>
- {
- typedef MemberType type;
- };
-
- template <typename Class, typename MemberType>
- struct member_type<MemberType (Class::* const&)>
- {
- typedef MemberType type;
- };
-
- template <typename T>
- struct object_type;
-
- template <typename T>
- struct object_type<T*>
- {
- typedef T type;
- };
- }
-
- namespace result_of
- {
- template <typename Env, typename Object, typename MemPtr>
- struct mem_obj_ptr
- {
- typedef typename meta::object_type<
- typename remove_const<
- typename remove_reference<
- typename boost::result_of<
- eval_grammar(Object const&, Env&)
- >::type
- >::type
- >::type
- >::type object_type;
-
- typedef typename meta::member_type<
- typename boost::result_of<
- eval_grammar(MemPtr const&, Env&)
- >::type
- >::type member_type;
-
- typedef typename add_reference<
- typename mpl::eval_if<
- is_const<object_type>
- , add_const<member_type>
- , mpl::identity<member_type>
- >::type
- >::type type;
- };
- }
-
- struct mem_obj_ptr
- {
- template <typename Sig>
- struct result;
-
- template <typename This, typename Env, typename Object, typename MemPtr>
- struct result<This(Env&, Object const&, MemPtr const&)>
- : result_of::mem_obj_ptr<Env, Object, MemPtr>
- {};
-
- template <typename Env, typename Object, typename MemPtr>
- typename result_of::mem_obj_ptr<Env, Object, MemPtr>::type
- operator()(Env& env, Object const& obj, MemPtr const& ptr) const
- {
- return get_pointer(eval(obj, env))->*eval(ptr, env);
- }
- };
-
- template <typename Object, typename MemPtr>
- struct make_mem_obj_ptr : compose<mem_obj_ptr, Object, MemPtr> {};
-
- namespace detail
- {
- template <typename RT, typename MP>
- struct member_variable
- {
- template <typename Sig>
- struct result;
-
- template <typename This, typename Class>
- struct result<This(Class)>
- {
- typedef typename boost::mpl::if_<
- boost::is_const<
- typename boost::remove_pointer<
- typename boost::remove_reference<Class>::type
- >::type
- >
- , const RT&
- , RT&
- >::type type;
- };
-
- member_variable(MP mp)
- : mp(mp) {}
-
- template <typename Class>
- RT& operator()(Class& obj) const
- {
- return obj.*mp;
- };
-
- template <typename Class>
- RT& operator()(Class* obj) const
- {
- return obj->*mp;
- };
-
- template <typename Class>
- RT const& operator()(Class const& obj) const
- {
- return obj.*mp;
- };
-
- template <typename Class>
- RT const& operator()(Class const* obj) const
- {
- return obj->*mp;
- };
-
- MP mp;
-
- };
- }
- */
-
-}}
-
-#endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/meta_grammar.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/meta_grammar.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/meta_grammar.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -6,8 +6,8 @@
     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_META_GRAMMAR_HPP
-#define PHOENIX_CORE_META_GRAMMAR_HPP
+#ifndef BOOST_PHOENIX_CORE_META_GRAMMAR_HPP
+#define BOOST_PHOENIX_CORE_META_GRAMMAR_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/mpl/deref.hpp>

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -4,8 +4,8 @@
     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_NOTHING_HPP
-#define PHOENIX_CORE_NOTHING_HPP
+#ifndef BOOST_PHOENIX_CORE_NOTHING_HPP
+#define BOOST_PHOENIX_CORE_NOTHING_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/mpl/void.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/preprocessed/expression.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/preprocessed/expression.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/preprocessed/expression.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,21 +5,21 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if !defined(PHOENIX_PREPROCESSED_EXPRESSION)
-#define PHOENIX_PREPROCESSED_EXPRESSION
+#if !defined(BOOST_PHOENIX_PREPROCESSED_EXPRESSION)
+#define BOOST_PHOENIX_PREPROCESSED_EXPRESSION
 
-#if PHOENIX_LIMIT <= 10
+#if BOOST_PHOENIX_LIMIT <= 10
 #include <boost/phoenix/core/preprocessed/expression_10.hpp>
-#elif PHOENIX_LIMIT <= 20
+#elif BOOST_PHOENIX_LIMIT <= 20
 #include <boost/phoenix/core/preprocessed/expression_20.hpp>
-#elif PHOENIX_LIMIT <= 30
+#elif BOOST_PHOENIX_LIMIT <= 30
 #include <boost/phoenix/core/preprocessed/expression_30.hpp>
-#elif PHOENIX_LIMIT <= 40
+#elif BOOST_PHOENIX_LIMIT <= 40
 #include <boost/phoenix/core/preprocessed/expression_40.hpp>
-#elif PHOENIX_LIMIT <= 50
+#elif BOOST_PHOENIX_LIMIT <= 50
 #include <boost/phoenix/core/preprocessed/expression_50.hpp>
 #else
-#error "PHOENIX_LIMIT out of bounds for preprocessed headers"
+#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
 #endif
 
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/reference.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/reference.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/reference.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_REFERENCE_HPP
-#define PHOENIX_CORE_REFERENCE_HPP
+#ifndef BOOST_PHOENIX_CORE_REFERENCE_HPP
+#define BOOST_PHOENIX_CORE_REFERENCE_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/ref.hpp>
@@ -29,7 +29,9 @@
         struct reference
             : expression::terminal<reference_wrapper<T> >
         {
- typedef typename expression::terminal<reference_wrapper<T> >::type type;
+ typedef
+ typename expression::terminal<reference_wrapper<T> >::type
+ type;
 
             static const type make(T & t)
             {
@@ -42,7 +44,9 @@
         struct reference<T const>
             : expression::terminal<reference_wrapper<T const> >
         {
- typedef typename expression::terminal<reference_wrapper<T const> >::type type;
+ typedef
+ typename expression::terminal<reference_wrapper<T const> >::type
+ type;
 
             static const type make(T const & t)
             {

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_TERMINAL_HPP
-#define PHOENIX_CORE_TERMINAL_HPP
+#ifndef BOOST_PHOENIX_CORE_TERMINAL_HPP
+#define BOOST_PHOENIX_CORE_TERMINAL_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/is_placeholder.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/terminal_fwd.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/terminal_fwd.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/terminal_fwd.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_TERMINAL_FWD_HPP
-#define PHOENIX_CORE_TERMINAL_FWD_HPP
+#ifndef BOOST_PHOENIX_CORE_TERMINAL_FWD_HPP
+#define BOOST_PHOENIX_CORE_TERMINAL_FWD_HPP
 
 namespace boost { namespace phoenix
 {

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/value.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/value.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/value.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_VALUE_HPP
-#define PHOENIX_CORE_VALUE_HPP
+#ifndef BOOST_PHOENIX_CORE_VALUE_HPP
+#define BOOST_PHOENIX_CORE_VALUE_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/actor.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/visit_each.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/visit_each.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/visit_each.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_VISIT_EACH_HPP
-#define PHOENIX_CORE_VISIT_EACH_HPP
+#ifndef BOOST_PHOENIX_CORE_VISIT_EACH_HPP
+#define BOOST_PHOENIX_CORE_VISIT_EACH_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/fusion/algorithm/iteration/for_each.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/function.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/function.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/function.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -4,8 +4,8 @@
     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_FUNCTION_HPP
-#define PHOENIX_FUNCTION_HPP
+#ifndef BOOST_PHOENIX_FUNCTION_HPP
+#define BOOST_PHOENIX_FUNCTION_HPP
 
 #include <boost/phoenix/version.hpp>
 #include <boost/phoenix/function/function.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/function/detail/function_operator.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/function/detail/function_operator.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/function/detail/function_operator.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,20 +1,20 @@
 
-#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_FUNCTION_DETAIL_FUNCTION_OPERATOR_HPP
-#define PHOENIX_FUNCTION_DETAIL_FUNCTION_OPERATOR_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_FUNCTION_DETAIL_FUNCTION_OPERATOR_HPP
+#define BOOST_PHOENIX_FUNCTION_DETAIL_FUNCTION_OPERATOR_HPP
 
 #include <boost/phoenix/function/detail/preprocessed/function_operator.hpp>
 
 #endif
 #else
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_FUNCTION_DETAIL_FUNCTION_OPERATOR_HPP
-#define PHOENIX_FUNCTION_DETAIL_FUNCTION_OPERATOR_HPP
+#ifndef BOOST_PHOENIX_FUNCTION_DETAIL_FUNCTION_OPERATOR_HPP
+#define BOOST_PHOENIX_FUNCTION_DETAIL_FUNCTION_OPERATOR_HPP
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/function_operator_" PHOENIX_LIMIT_STR ".hpp")
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/function_operator_" BOOST_PHOENIX_LIMIT_STR ".hpp")
 #endif
 
 /*==============================================================================
@@ -25,32 +25,32 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(preserve: 1)
 #endif
 
-#define PHOENIX_ITERATION_PARAMS \
- (3, (1, PHOENIX_ACTOR_LIMIT, \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (1, BOOST_PHOENIX_ACTOR_LIMIT, \
     <boost/phoenix/function/detail/function_operator.hpp>))
-#include PHOENIX_ITERATE()
+#include BOOST_PHOENIX_ITERATE()
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
 #endif
 
 #else
- template <typename This, PHOENIX_typename_A>
- struct result<This(PHOENIX_A_const_ref)>
- : expression::function<F, PHOENIX_A>
+ template <typename This, BOOST_PHOENIX_typename_A>
+ struct result<This(BOOST_PHOENIX_A_const_ref)>
+ : expression::function<F, BOOST_PHOENIX_A>
         {};
 
- template <PHOENIX_typename_A>
- typename expression::function<F, PHOENIX_A>::type const
- operator()(PHOENIX_A_const_ref_a) const
+ template <BOOST_PHOENIX_typename_A>
+ typename expression::function<F, BOOST_PHOENIX_A>::type const
+ operator()(BOOST_PHOENIX_A_const_ref_a) const
         {
- return expression::function<F, PHOENIX_A>::make(f, PHOENIX_a);
+ return expression::function<F, BOOST_PHOENIX_A>::make(f, BOOST_PHOENIX_a);
         }
 
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/function/detail/function_result_of.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/function/detail/function_result_of.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/function/detail/function_result_of.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,20 +1,20 @@
 
-#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_FUNCTION_DETAIL_FUNCTION_RESULT_OF_HPP
-#define PHOENIX_FUNCTION_DETAIL_FUNCTION_RESULT_OF_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_FUNCTION_DETAIL_FUNCTION_RESULT_OF_HPP
+#define BOOST_PHOENIX_FUNCTION_DETAIL_FUNCTION_RESULT_OF_HPP
 
 #include <boost/phoenix/function/detail/preprocessed/function_result_of.hpp>
 
 #endif
 #else
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_FUNCTION_DETAIL_FUNCTION_RESULT_OF_HPP
-#define PHOENIX_FUNCTION_DETAIL_FUNCTION_RESULT_OF_HPP
+#ifndef BOOST_PHOENIX_FUNCTION_DETAIL_FUNCTION_RESULT_OF_HPP
+#define BOOST_PHOENIX_FUNCTION_DETAIL_FUNCTION_RESULT_OF_HPP
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/function_result_of_" PHOENIX_LIMIT_STR ".hpp")
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/function_result_of_" BOOST_PHOENIX_LIMIT_STR ".hpp")
 #endif
 
 /*==============================================================================
@@ -25,16 +25,16 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(preserve: 1)
 #endif
 
-#define PHOENIX_ITERATION_PARAMS \
- (3, (1, PHOENIX_ACTOR_LIMIT, \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (1, BOOST_PHOENIX_ACTOR_LIMIT, \
     <boost/phoenix/function/detail/function_result_of.hpp>))
 #include PHOENIX_ITERATE()
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
@@ -42,13 +42,13 @@
 
 #else
 
- template <typename F, PHOENIX_typename_A>
- struct function<F, PHOENIX_A>
+ template <typename F, BOOST_PHOENIX_typename_A>
+ struct function<F, BOOST_PHOENIX_A>
             : proto::result_of::make_expr<
                 proto::tag::function
               , phoenix_domain
               , F
- , PHOENIX_A
+ , BOOST_PHOENIX_A
>
         {};
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/function/detail/preprocessed/function_operator.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/function/detail/preprocessed/function_operator.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/function/detail/preprocessed/function_operator.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,21 +5,21 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if !defined(PHOENIX_PREPROCESSED_FUNCTION_OPERATOR)
-#define PHOENIX_PREPROCESSED_FUNCTION_OPERATOR
+#if !defined(BOOST_PHOENIX_PREPROCESSED_FUNCTION_OPERATOR)
+#define BOOST_PHOENIX_PREPROCESSED_FUNCTION_OPERATOR
 
-#if PHOENIX_LIMIT <= 10
+#if BOOST_PHOENIX_LIMIT <= 10
 #include <boost/phoenix/function/detail/preprocessed/function_operator_10.hpp>
-#elif PHOENIX_LIMIT <= 20
+#elif BOOST_PHOENIX_LIMIT <= 20
 #include <boost/phoenix/function/detail/preprocessed/function_operator_20.hpp>
-#elif PHOENIX_LIMIT <= 30
+#elif BOOST_PHOENIX_LIMIT <= 30
 #include <boost/phoenix/function/detail/preprocessed/function_operator_30.hpp>
-#elif PHOENIX_LIMIT <= 40
+#elif BOOST_PHOENIX_LIMIT <= 40
 #include <boost/phoenix/function/detail/preprocessed/function_operator_40.hpp>
-#elif PHOENIX_LIMIT <= 50
+#elif BOOST_PHOENIX_LIMIT <= 50
 #include <boost/phoenix/function/detail/preprocessed/function_operator_50.hpp>
 #else
-#error "PHOENIX_LIMIT out of bounds for preprocessed headers"
+#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
 #endif
 
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/function/detail/preprocessed/function_result_of.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/function/detail/preprocessed/function_result_of.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/function/detail/preprocessed/function_result_of.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,21 +5,21 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if !defined(PHOENIX_PREPROCESSED_FUNCTION_RESULT_OF)
-#define PHOENIX_PREPROCESSED_FUNCTION_RESULT_OF
+#if !defined(BOOST_PHOENIX_PREPROCESSED_FUNCTION_RESULT_OF)
+#define BOOST_PHOENIX_PREPROCESSED_FUNCTION_RESULT_OF
 
-#if PHOENIX_LIMIT <= 10
+#if BOOST_PHOENIX_LIMIT <= 10
 #include <boost/phoenix/function/detail/preprocessed/function_result_of_10.hpp>
-#elif PHOENIX_LIMIT <= 20
+#elif BOOST_PHOENIX_LIMIT <= 20
 #include <boost/phoenix/function/detail/preprocessed/function_result_of_20.hpp>
-#elif PHOENIX_LIMIT <= 30
+#elif BOOST_PHOENIX_LIMIT <= 30
 #include <boost/phoenix/function/detail/preprocessed/function_result_of_30.hpp>
-#elif PHOENIX_LIMIT <= 40
+#elif BOOST_PHOENIX_LIMIT <= 40
 #include <boost/phoenix/function/detail/preprocessed/function_result_of_40.hpp>
-#elif PHOENIX_LIMIT <= 50
+#elif BOOST_PHOENIX_LIMIT <= 50
 #include <boost/phoenix/function/detail/preprocessed/function_result_of_50.hpp>
 #else
-#error "PHOENIX_LIMIT out of bounds for preprocessed headers"
+#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
 #endif
 
 #endif

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_FUNCTION_FUNCTION_HPP
-#define PHOENIX_FUNCTION_FUNCTION_HPP
+#ifndef BOOST_PHOENIX_FUNCTION_FUNCTION_HPP
+#define BOOST_PHOENIX_FUNCTION_FUNCTION_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/fusion/sequence/intrinsic/at_c.hpp>
@@ -32,23 +32,25 @@
 
         template <
             typename F
- , PHOENIX_typename_A_void(PHOENIX_LIMIT)
+ , BOOST_PHOENIX_typename_A_void(BOOST_PHOENIX_LIMIT)
           , typename Dummy = void
>
         struct function;
 
- #define PHOENIX_DEFINE_FUNCTION_EXPRESSION(_, N, __) \
- template <typename F, PHOENIX_typename_A(N)> \
- struct function<F, PHOENIX_A(N)> \
- : expr<tag::function, F, PHOENIX_A(N)> \
+ #define BOOST_PHOENIX_DEFINE_FUNCTION_EXPRESSION(_, N, __) \
+ template <typename F, BOOST_PHOENIX_typename_A(N)> \
+ struct function<F, BOOST_PHOENIX_A(N)> \
+ : expr<tag::function, F, BOOST_PHOENIX_A(N)> \
         {}; \
 
         BOOST_PP_REPEAT_FROM_TO(
             1
- , PHOENIX_LIMIT
- , PHOENIX_DEFINE_FUNCTION_EXPRESSION
+ , BOOST_PHOENIX_LIMIT
+ , BOOST_PHOENIX_DEFINE_FUNCTION_EXPRESSION
           , _
         )
+
+ #undef BOOST_PHOENIX_DEFINE_FUNCTION_EXPRESSION
     }
 
     namespace rule

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/fusion.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/fusion.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/fusion.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_FUSION_HPP
-#define PHOENIX_FUSION_HPP
+#ifndef BOOST_PHOENIX_FUSION_HPP
+#define BOOST_PHOENIX_FUSION_HPP
 
 #include <boost/phoenix/fusion/at.hpp>
 

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -6,8 +6,8 @@
     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_FUSION_AT_HPP
-#define PHOENIX_FUSION_AT_HPP
+#ifndef BOOST_PHOENIX_FUSION_AT_HPP
+#define BOOST_PHOENIX_FUSION_AT_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/fusion/sequence/intrinsic/at_c.hpp>
@@ -15,7 +15,7 @@
 #include <boost/phoenix/core/meta_grammar.hpp>
 #include <boost/type_traits/remove_reference.hpp>
     
-PHOENIX_DEFINE_EXPRESSION(
+BOOST_PHOENIX_DEFINE_EXPRESSION(
     (boost)(phoenix)(at_c)
   , (proto::terminal<proto::_>)
     (meta_grammar)

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_OBJECT_HPP
-#define PHOENIX_OBJECT_HPP
+#ifndef BOOST_PHOENIX_OBJECT_HPP
+#define BOOST_PHOENIX_OBJECT_HPP
 
 #include <boost/phoenix/object/const_cast.hpp>
 #include <boost/phoenix/object/construct.hpp>

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_OBJECT_CONST_CAST_HPP
-#define PHOENIX_OBJECT_CONST_CAST_HPP
+#ifndef BOOST_PHOENIX_OBJECT_CONST_CAST_HPP
+#define BOOST_PHOENIX_OBJECT_CONST_CAST_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/call.hpp>
@@ -15,7 +15,7 @@
 #include <boost/phoenix/object/detail/target.hpp>
 #include <boost/proto/transform/lazy.hpp>
 
-PHOENIX_DEFINE_EXPRESSION(
+BOOST_PHOENIX_DEFINE_EXPRESSION(
     (boost)(phoenix)(const_cast_)
   , (proto::terminal<detail::target<proto::_> >)
     (meta_grammar)

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_OBJECT_CONSTRUCT_HPP
-#define PHOENIX_OBJECT_CONSTRUCT_HPP
+#ifndef BOOST_PHOENIX_OBJECT_CONSTRUCT_HPP
+#define BOOST_PHOENIX_OBJECT_CONSTRUCT_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/call.hpp>
@@ -16,11 +16,11 @@
 #include <boost/phoenix/support/iterate.hpp>
 #include <boost/preprocessor/repetition/repeat_from_to.hpp>
 
-PHOENIX_DEFINE_EXPRESSION_VARARG(
+BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG(
     (boost)(phoenix)(construct)
   , (proto::terminal<detail::target<proto::_> >)
     (meta_grammar)
- , PHOENIX_COMPOSITE_LIMIT
+ , BOOST_PHOENIX_COMPOSITE_LIMIT
 )
 
 namespace boost { namespace phoenix

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,15 +5,15 @@
     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_OBJECT_DELETE_HPP
-#define PHOENIX_OBJECT_DELETE_HPP
+#ifndef BOOST_PHOENIX_OBJECT_DELETE_HPP
+#define BOOST_PHOENIX_OBJECT_DELETE_HPP
 
 #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_DEFINE_EXPRESSION(
     (boost)(phoenix)(delete_)
   , (meta_grammar)
 )

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/construct.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/construct.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/construct.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,20 +1,20 @@
 
-#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_OBJECT_DETAIL_CONSTRUCT_HPP
-#define PHOENIX_OBJECT_DETAIL_CONSTRUCT_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_OBJECT_DETAIL_CONSTRUCT_HPP
+#define BOOST_PHOENIX_OBJECT_DETAIL_CONSTRUCT_HPP
 
 #include <boost/phoenix/object/detail/preprocessed/construct.hpp>
 
 #endif
 #else
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_OBJECT_DETAIL_CONSTRUCT_HPP
-#define PHOENIX_OBJECT_DETAIL_CONSTRUCT_HPP
+#ifndef BOOST_PHOENIX_OBJECT_DETAIL_CONSTRUCT_HPP
+#define BOOST_PHOENIX_OBJECT_DETAIL_CONSTRUCT_HPP
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/construct_" PHOENIX_LIMIT_STR ".hpp")
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/construct_" BOOST_PHOENIX_LIMIT_STR ".hpp")
 #endif
 
 /*==============================================================================
@@ -25,16 +25,16 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(preserve: 1)
 #endif
 
-#define PHOENIX_ITERATION_PARAMS \
- (3, (1, PHOENIX_COMPOSITE_LIMIT, \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (1, BOOST_PHOENIX_COMPOSITE_LIMIT, \
     <boost/phoenix/object/detail/construct.hpp>))
-#include PHOENIX_ITERATE()
+#include BOOST_PHOENIX_ITERATE()
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
@@ -42,16 +42,16 @@
 
 #else
 
- template <typename T, PHOENIX_typename_A>
- typename expression::construct<detail::target<T>, PHOENIX_A>::type const
- construct(PHOENIX_A_const_ref_a)
+ template <typename T, BOOST_PHOENIX_typename_A>
+ typename expression::construct<detail::target<T>, BOOST_PHOENIX_A>::type const
+ construct(BOOST_PHOENIX_A_const_ref_a)
     {
         return
             expression::
- construct<detail::target<T>, PHOENIX_A>::
- make(detail::target<T>(), PHOENIX_a);
+ construct<detail::target<T>, BOOST_PHOENIX_A>::
+ make(detail::target<T>(), BOOST_PHOENIX_a);
     }
 
 #endif
 
-#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,19 +1,21 @@
 
-/*
-#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_OBJECT_DETAIL_CONSTRUCT_EVAL_HPP
-#define PHOENIX_OBJECT_DETAIL_CONSTRUCT_EVAL_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_OBJECT_DETAIL_CONSTRUCT_EVAL_HPP
+#define BOOST_PHOENIX_OBJECT_DETAIL_CONSTRUCT_EVAL_HPP
 
 #include <boost/phoenix/object/detail/preprocessed/construct_eval.hpp>
 
 #endif
 #else
-*/
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_OBJECT_DETAIL_CONSTRUCT_EVAL_HPP
-#define PHOENIX_OBJECT_DETAIL_CONSTRUCT_EVAL_HPP
+#ifndef BOOST_PHOENIX_OBJECT_DETAIL_CONSTRUCT_EVAL_HPP
+#define BOOST_PHOENIX_OBJECT_DETAIL_CONSTRUCT_EVAL_HPP
+
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/construct_eval_" BOOST_PHOENIX_LIMIT_STR ".hpp")
+#endif
 
 /*==============================================================================
     Copyright (c) 2005-2010 Joel de Guzman
@@ -23,12 +25,16 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#define PHOENIX_ITERATION_PARAMS \
- (3, (2, PHOENIX_COMPOSITE_LIMIT, \
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (2, BOOST_PHOENIX_COMPOSITE_LIMIT, \
     <boost/phoenix/object/detail/construct_eval.hpp>))
-#include PHOENIX_ITERATE()
+#include BOOST_PHOENIX_ITERATE()
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
@@ -36,26 +42,30 @@
 
 #else
 
- template <typename This, typename Context, PHOENIX_typename_A>
- struct result<This(Context, PHOENIX_A)>
+ template <typename This, typename Context, BOOST_PHOENIX_typename_A>
+ struct result<This(Context, BOOST_PHOENIX_A)>
             : detail::result_of::target<A0>
         {
         };
         
- template <typename Context, PHOENIX_typename_A>
+ template <typename Context, BOOST_PHOENIX_typename_A>
         typename detail::result_of::target<A0>::type
- operator()(Context const& ctx, PHOENIX_A_const_ref_a) const
+ operator()(Context const& ctx, BOOST_PHOENIX_A_const_ref_a) const
         {
 #define EVAL_a(_,n,__) \
             BOOST_PP_COMMA_IF(BOOST_PP_DEC(n)) eval(a ## n, ctx)
 
             return
                 typename detail::result_of::target<A0>::type(
- BOOST_PP_REPEAT_FROM_TO(1, PHOENIX_ITERATION, EVAL_a, _)
+ BOOST_PP_REPEAT_FROM_TO(
+ 1
+ , BOOST_PHOENIX_ITERATION
+ , EVAL_a, _
+ )
                 );
 #undef EVAL_a
         }
 
 #endif
 
-//#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/new.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/new.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/new.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,20 +1,20 @@
 
-#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_OBJECT_DETAIL_NEW_HPP
-#define PHOENIX_OBJECT_DETAIL_NEW_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_OBJECT_DETAIL_NEW_HPP
+#define BOOST_PHOENIX_OBJECT_DETAIL_NEW_HPP
 
 #include <boost/phoenix/object/detail/preprocessed/new.hpp>
 
 #endif
 #else
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_OBJECT_DETAIL_NEW_HPP
-#define PHOENIX_OBJECT_DETAIL_NEW_HPP
+#ifndef BOOST_PHOENIX_OBJECT_DETAIL_NEW_HPP
+#define BOOST_PHOENIX_OBJECT_DETAIL_NEW_HPP
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/new_" PHOENIX_LIMIT_STR ".hpp")
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/new_" BOOST_PHOENIX_LIMIT_STR ".hpp")
 #endif
 
 /*==============================================================================
@@ -25,16 +25,16 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(preserve: 1)
 #endif
 
-#define PHOENIX_ITERATION_PARAMS \
- (3, (1, PHOENIX_COMPOSITE_LIMIT, \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (1, BOOST_PHOENIX_COMPOSITE_LIMIT, \
     <boost/phoenix/object/detail/new.hpp>))
-#include PHOENIX_ITERATE()
+#include BOOST_PHOENIX_ITERATE()
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
@@ -42,16 +42,16 @@
 
 #else
 
- template <typename T, PHOENIX_typename_A>
- typename expression::new_<detail::target<T>, PHOENIX_A>::type const
- new_(PHOENIX_A_const_ref_a)
+ template <typename T, BOOST_PHOENIX_typename_A>
+ typename expression::new_<detail::target<T>, BOOST_PHOENIX_A>::type const
+ new_(BOOST_PHOENIX_A_const_ref_a)
     {
         return
             expression::
- new_<detail::target<T>, PHOENIX_A>::
- make(detail::target<T>(), PHOENIX_a);
+ new_<detail::target<T>, BOOST_PHOENIX_A>::
+ make(detail::target<T>(), BOOST_PHOENIX_a);
     }
 
 #endif
 
-#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif // BOOST_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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,20 +1,20 @@
 
-#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_OBJECT_DETAIL_NEW_EVAL_HPP
-#define PHOENIX_OBJECT_DETAIL_NEW_EVAL_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_OBJECT_DETAIL_NEW_EVAL_HPP
+#define BOOST_PHOENIX_OBJECT_DETAIL_NEW_EVAL_HPP
 
 #include <boost/phoenix/object/detail/preprocessed/new_eval.hpp>
 
 #endif
 #else
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_OBJECT_DETAIL_NEW_EVAL_HPP
-#define PHOENIX_OBJECT_DETAIL_NEW_EVAL_HPP
+#ifndef BOOST_PHOENIX_OBJECT_DETAIL_NEW_EVAL_HPP
+#define BOOST_PHOENIX_OBJECT_DETAIL_NEW_EVAL_HPP
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/new_eval_" PHOENIX_LIMIT_STR ".hpp")
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/new_eval_" BOOST_PHOENIX_LIMIT_STR ".hpp")
 #endif
 
 /*==============================================================================
@@ -25,16 +25,16 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(preserve: 1)
 #endif
 
-#define PHOENIX_ITERATION_PARAMS \
- (3, (2, PHOENIX_COMPOSITE_LIMIT, \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (2, BOOST_PHOENIX_COMPOSITE_LIMIT, \
     <boost/phoenix/object/detail/new_eval.hpp>))
-#include PHOENIX_ITERATE()
+#include BOOST_PHOENIX_ITERATE()
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
@@ -42,26 +42,38 @@
 
 #else
 
- template <typename This, typename Context, PHOENIX_typename_A>
- struct result<This(Context, PHOENIX_A)>
+ template <typename This, typename Context, BOOST_PHOENIX_typename_A>
+ struct result<This(Context, BOOST_PHOENIX_A)>
         {
- typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ 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>
- typename result<new_eval(Context const &, PHOENIX_A_const_ref)>::type
- operator()(Context const & ctx, PHOENIX_A_const_ref_a) const
+ template <typename Context, BOOST_PHOENIX_typename_A>
+ typename result<new_eval(Context const &, BOOST_PHOENIX_A_const_ref)>::type
+ operator()(Context const & ctx, BOOST_PHOENIX_A_const_ref_a) const
         {
 #define EVAL_a(_,n,__) \
             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, _)
+ return
+ new typename result<
+ new_eval(Context const &, BOOST_PHOENIX_A_const_ref)
+ >::construct_type(
+ BOOST_PP_REPEAT_FROM_TO(
+ 1
+ , BOOST_PHOENIX_ITERATION
+ , EVAL_a
+ , _
+ )
                 );
 #undef EVAL_a
         }
 
 #endif
 
-#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,21 +5,21 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if !defined(PHOENIX_PREPROCESSED_CONSTRUCT)
-#define PHOENIX_PREPROCESSED_CONSTRUCT
+#if !defined(BOOST_PHOENIX_PREPROCESSED_CONSTRUCT)
+#define BOOST_PHOENIX_PREPROCESSED_CONSTRUCT
 
-#if PHOENIX_LIMIT <= 10
+#if BOOST_PHOENIX_LIMIT <= 10
 #include <boost/phoenix/object/detail/preprocessed/construct_10.hpp>
-#elif PHOENIX_LIMIT <= 20
+#elif BOOST_PHOENIX_LIMIT <= 20
 #include <boost/phoenix/object/detail/preprocessed/construct_20.hpp>
-#elif PHOENIX_LIMIT <= 30
+#elif BOOST_PHOENIX_LIMIT <= 30
 #include <boost/phoenix/object/detail/preprocessed/construct_30.hpp>
-#elif PHOENIX_LIMIT <= 40
+#elif BOOST_PHOENIX_LIMIT <= 40
 #include <boost/phoenix/object/detail/preprocessed/construct_40.hpp>
-#elif PHOENIX_LIMIT <= 50
+#elif BOOST_PHOENIX_LIMIT <= 50
 #include <boost/phoenix/object/detail/preprocessed/construct_50.hpp>
 #else
-#error "PHOENIX_LIMIT out of bounds for preprocessed headers"
+#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
 #endif
 
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,21 +5,21 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if !defined(PHOENIX_PREPROCESSED_CONSTRUCT_EVAL)
-#define PHOENIX_PREPROCESSED_CONSTRUCT_EVAL
+#if !defined(BOOST_PHOENIX_PREPROCESSED_CONSTRUCT_EVAL)
+#define BOOST_PHOENIX_PREPROCESSED_CONSTRUCT_EVAL
 
-#if PHOENIX_LIMIT <= 10
+#if BOOST_PHOENIX_LIMIT <= 10
 #include <boost/phoenix/object/detail/preprocessed/construct_eval_10.hpp>
-#elif PHOENIX_LIMIT <= 20
+#elif BOOST_PHOENIX_LIMIT <= 20
 #include <boost/phoenix/object/detail/preprocessed/construct_eval_20.hpp>
-#elif PHOENIX_LIMIT <= 30
+#elif BOOST_PHOENIX_LIMIT <= 30
 #include <boost/phoenix/object/detail/preprocessed/construct_eval_30.hpp>
-#elif PHOENIX_LIMIT <= 40
+#elif BOOST_PHOENIX_LIMIT <= 40
 #include <boost/phoenix/object/detail/preprocessed/construct_eval_40.hpp>
-#elif PHOENIX_LIMIT <= 50
+#elif BOOST_PHOENIX_LIMIT <= 50
 #include <boost/phoenix/object/detail/preprocessed/construct_eval_50.hpp>
 #else
-#error "PHOENIX_LIMIT out of bounds for preprocessed headers"
+#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
 #endif
 
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_10.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_10.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_10.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -12,26 +12,20 @@
     
     
     
-
- template <typename Context, typename A0>
- result_type
- operator()(Context& ctx, A0 const& a0) const
+ template <typename This, typename Context, typename A0 , typename A1>
+ struct result<This(Context, A0 , A1)>
+ : detail::result_of::target<A0>
         {
- return result_type(eval(a0, ctx));
- }
-
-
-
-
-
-
-
+ };
         
         template <typename Context, typename A0 , typename A1>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1) const
+ typename detail::result_of::target<A0>::type
+ operator()(Context const& ctx, A0 const& a0 , A1 const& a1) const
         {
- return result_type(eval(a0, ctx) , eval(a1, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx)
+ );
         }
     
     
@@ -40,12 +34,20 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2>
+ struct result<This(Context, A0 , A1 , A2)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::type
+ operator()(Context const& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
- return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx)
+ );
         }
     
     
@@ -54,12 +56,20 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct result<This(Context, A0 , A1 , A2 , A3)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::type
+ operator()(Context const& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
- return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx)
+ );
         }
     
     
@@ -68,12 +78,20 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::type
+ operator()(Context const& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
- return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
+ );
         }
     
     
@@ -82,12 +100,20 @@
     
     
     
+ 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
+ );
         }
     
     
@@ -96,12 +122,20 @@
     
     
     
+ 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
+ );
         }
     
     
@@ -110,12 +144,20 @@
     
     
     
+ 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
+ );
         }
     
     
@@ -124,12 +166,20 @@
     
     
     
+ 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -138,10 +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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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/construct_eval_20.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_20.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_20.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -12,26 +12,20 @@
     
     
     
-
- template <typename Context, typename A0>
- result_type
- operator()(Context& ctx, A0 const& a0) const
+ template <typename This, typename Context, typename A0 , typename A1>
+ struct result<This(Context, A0 , A1)>
+ : detail::result_of::target<A0>
         {
- return result_type(eval(a0, ctx));
- }
-
-
-
-
-
-
-
+ };
         
         template <typename Context, typename A0 , typename A1>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1) const
+ typename detail::result_of::target<A0>::type
+ operator()(Context const& ctx, A0 const& a0 , A1 const& a1) const
         {
- return result_type(eval(a0, ctx) , eval(a1, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx)
+ );
         }
     
     
@@ -40,12 +34,20 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2>
+ struct result<This(Context, A0 , A1 , A2)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::type
+ operator()(Context const& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
- return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx)
+ );
         }
     
     
@@ -54,12 +56,20 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct result<This(Context, A0 , A1 , A2 , A3)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::type
+ operator()(Context const& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
- return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx)
+ );
         }
     
     
@@ -68,12 +78,20 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::type
+ operator()(Context const& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
- return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
+ );
         }
     
     
@@ -82,12 +100,20 @@
     
     
     
+ 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
+ );
         }
     
     
@@ -96,12 +122,20 @@
     
     
     
+ 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
+ );
         }
     
     
@@ -110,12 +144,20 @@
     
     
     
+ 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
+ );
         }
     
     
@@ -124,12 +166,20 @@
     
     
     
+ 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -138,12 +188,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -152,12 +210,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -166,12 +232,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -180,12 +254,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -194,12 +276,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -208,12 +298,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -222,12 +320,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -236,12 +342,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -250,12 +364,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -264,12 +386,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -278,10 +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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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/construct_eval_30.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_30.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_30.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -12,26 +12,20 @@
     
     
     
-
- template <typename Context, typename A0>
- result_type
- operator()(Context& ctx, A0 const& a0) const
+ template <typename This, typename Context, typename A0 , typename A1>
+ struct result<This(Context, A0 , A1)>
+ : detail::result_of::target<A0>
         {
- return result_type(eval(a0, ctx));
- }
-
-
-
-
-
-
-
+ };
         
         template <typename Context, typename A0 , typename A1>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1) const
+ typename detail::result_of::target<A0>::type
+ operator()(Context const& ctx, A0 const& a0 , A1 const& a1) const
         {
- return result_type(eval(a0, ctx) , eval(a1, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx)
+ );
         }
     
     
@@ -40,12 +34,20 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2>
+ struct result<This(Context, A0 , A1 , A2)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::type
+ operator()(Context const& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
- return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx)
+ );
         }
     
     
@@ -54,12 +56,20 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct result<This(Context, A0 , A1 , A2 , A3)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::type
+ operator()(Context const& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
- return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx)
+ );
         }
     
     
@@ -68,12 +78,20 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::type
+ operator()(Context const& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
- return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
+ );
         }
     
     
@@ -82,12 +100,20 @@
     
     
     
+ 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
+ );
         }
     
     
@@ -96,12 +122,20 @@
     
     
     
+ 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
+ );
         }
     
     
@@ -110,12 +144,20 @@
     
     
     
+ 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
+ );
         }
     
     
@@ -124,12 +166,20 @@
     
     
     
+ 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -138,12 +188,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -152,12 +210,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -166,12 +232,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -180,12 +254,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -194,12 +276,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -208,12 +298,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -222,12 +320,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -236,12 +342,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -250,12 +364,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -264,12 +386,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -278,12 +408,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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -292,12 +430,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -306,12 +452,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -320,12 +474,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -334,12 +496,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -348,12 +518,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -362,12 +540,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -376,12 +562,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -390,12 +584,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -404,12 +606,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -418,10 +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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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/construct_eval_40.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_40.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_40.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -12,26 +12,20 @@
     
     
     
-
- template <typename Context, typename A0>
- result_type
- operator()(Context& ctx, A0 const& a0) const
+ template <typename This, typename Context, typename A0 , typename A1>
+ struct result<This(Context, A0 , A1)>
+ : detail::result_of::target<A0>
         {
- return result_type(eval(a0, ctx));
- }
-
-
-
-
-
-
-
+ };
         
         template <typename Context, typename A0 , typename A1>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1) const
+ typename detail::result_of::target<A0>::type
+ operator()(Context const& ctx, A0 const& a0 , A1 const& a1) const
         {
- return result_type(eval(a0, ctx) , eval(a1, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx)
+ );
         }
     
     
@@ -40,12 +34,20 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2>
+ struct result<This(Context, A0 , A1 , A2)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::type
+ operator()(Context const& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
- return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx)
+ );
         }
     
     
@@ -54,12 +56,20 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct result<This(Context, A0 , A1 , A2 , A3)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::type
+ operator()(Context const& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
- return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx)
+ );
         }
     
     
@@ -68,12 +78,20 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::type
+ operator()(Context const& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
- return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
+ );
         }
     
     
@@ -82,12 +100,20 @@
     
     
     
+ 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
+ );
         }
     
     
@@ -96,12 +122,20 @@
     
     
     
+ 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
+ );
         }
     
     
@@ -110,12 +144,20 @@
     
     
     
+ 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
+ );
         }
     
     
@@ -124,12 +166,20 @@
     
     
     
+ 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -138,12 +188,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -152,12 +210,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -166,12 +232,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -180,12 +254,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -194,12 +276,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -208,12 +298,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -222,12 +320,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -236,12 +342,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -250,12 +364,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -264,12 +386,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -278,12 +408,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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -292,12 +430,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -306,12 +452,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -320,12 +474,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -334,12 +496,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -348,12 +518,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -362,12 +540,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -376,12 +562,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -390,12 +584,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -404,12 +606,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -418,12 +628,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -432,12 +650,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -446,12 +672,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -460,12 +694,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -474,12 +716,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -488,12 +738,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -502,12 +760,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -516,12 +782,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -530,12 +804,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -544,12 +826,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -558,10 +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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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/detail/preprocessed/construct_eval_50.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_50.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/construct_eval_50.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -12,26 +12,20 @@
     
     
     
-
- template <typename Context, typename A0>
- result_type
- operator()(Context& ctx, A0 const& a0) const
+ template <typename This, typename Context, typename A0 , typename A1>
+ struct result<This(Context, A0 , A1)>
+ : detail::result_of::target<A0>
         {
- return result_type(eval(a0, ctx));
- }
-
-
-
-
-
-
-
+ };
         
         template <typename Context, typename A0 , typename A1>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1) const
+ typename detail::result_of::target<A0>::type
+ operator()(Context const& ctx, A0 const& a0 , A1 const& a1) const
         {
- return result_type(eval(a0, ctx) , eval(a1, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx)
+ );
         }
     
     
@@ -40,12 +34,20 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2>
+ struct result<This(Context, A0 , A1 , A2)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::type
+ operator()(Context const& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
- return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx)
+ );
         }
     
     
@@ -54,12 +56,20 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct result<This(Context, A0 , A1 , A2 , A3)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::type
+ operator()(Context const& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
- return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx)
+ );
         }
     
     
@@ -68,12 +78,20 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::type
+ operator()(Context const& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
- return result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
+ );
         }
     
     
@@ -82,12 +100,20 @@
     
     
     
+ 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
+ );
         }
     
     
@@ -96,12 +122,20 @@
     
     
     
+ 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_type(eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx));
+ return
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
+ );
         }
     
     
@@ -110,12 +144,20 @@
     
     
     
+ 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
+ );
         }
     
     
@@ -124,12 +166,20 @@
     
     
     
+ 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -138,12 +188,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -152,12 +210,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -166,12 +232,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -180,12 +254,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -194,12 +276,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -208,12 +298,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -222,12 +320,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -236,12 +342,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -250,12 +364,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -264,12 +386,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>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -278,12 +408,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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -292,12 +430,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -306,12 +452,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -320,12 +474,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -334,12 +496,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -348,12 +518,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -362,12 +540,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -376,12 +562,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -390,12 +584,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -404,12 +606,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -418,12 +628,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -432,12 +650,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -446,12 +672,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -460,12 +694,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -474,12 +716,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -488,12 +738,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -502,12 +760,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -516,12 +782,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -530,12 +804,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -544,12 +826,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -558,12 +848,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 , 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)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 detail::result_of::target<A0>::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 result_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
+ typename detail::result_of::target<A0>::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)
+ );
         }
     
     
@@ -572,12 +870,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 , 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 A40>
+ 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 , A40)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 A40>
- 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 , A40 const& a40) const
+ typename detail::result_of::target<A0>::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 , A40 const& a40) const
         {
- return result_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) , eval(a40, ctx));
+ return
+ typename detail::result_of::target<A0>::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) , eval(a40, ctx)
+ );
         }
     
     
@@ -586,12 +892,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 , 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 A40 , typename A41>
+ 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 , A40 , A41)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 A40 , typename A41>
- 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 , A40 const& a40 , A41 const& a41) const
+ typename detail::result_of::target<A0>::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 , A40 const& a40 , A41 const& a41) const
         {
- return result_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) , eval(a40, ctx) , eval(a41, ctx));
+ return
+ typename detail::result_of::target<A0>::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) , eval(a40, ctx) , eval(a41, ctx)
+ );
         }
     
     
@@ -600,12 +914,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 , 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 A40 , typename A41 , typename A42>
+ 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 , A40 , A41 , A42)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 A40 , typename A41 , typename A42>
- 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 , A40 const& a40 , A41 const& a41 , A42 const& a42) const
+ typename detail::result_of::target<A0>::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 , A40 const& a40 , A41 const& a41 , A42 const& a42) const
         {
- return result_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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx));
+ return
+ typename detail::result_of::target<A0>::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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx)
+ );
         }
     
     
@@ -614,12 +936,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 , 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 A40 , typename A41 , typename A42 , typename A43>
+ 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 , A40 , A41 , A42 , A43)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 A40 , typename A41 , typename A42 , typename A43>
- 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43) const
+ typename detail::result_of::target<A0>::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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43) const
         {
- return result_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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx));
+ return
+ typename detail::result_of::target<A0>::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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx)
+ );
         }
     
     
@@ -628,12 +958,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 , 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 A40 , typename A41 , typename A42 , typename A43 , typename A44>
+ 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 , A40 , A41 , A42 , A43 , A44)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 A40 , typename A41 , typename A42 , typename A43 , typename A44>
- 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44) const
+ typename detail::result_of::target<A0>::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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44) const
         {
- return result_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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx));
+ return
+ typename detail::result_of::target<A0>::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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx)
+ );
         }
     
     
@@ -642,12 +980,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 , 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
- 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45) const
+ typename detail::result_of::target<A0>::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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45) const
         {
- return result_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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx));
+ return
+ typename detail::result_of::target<A0>::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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx)
+ );
         }
     
     
@@ -656,12 +1002,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 , 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
- 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46) const
+ typename detail::result_of::target<A0>::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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46) const
         {
- return result_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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx));
+ return
+ typename detail::result_of::target<A0>::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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx)
+ );
         }
     
     
@@ -670,12 +1024,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 , 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
- 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47) const
+ typename detail::result_of::target<A0>::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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47) const
         {
- return result_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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx));
+ return
+ typename detail::result_of::target<A0>::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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx)
+ );
         }
     
     
@@ -684,12 +1046,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 , 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
- 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48) const
+ typename detail::result_of::target<A0>::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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48) const
         {
- return result_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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx) , eval(a48, ctx));
+ return
+ typename detail::result_of::target<A0>::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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx) , eval(a48, ctx)
+ );
         }
     
     
@@ -698,10 +1068,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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 , A49)>
+ : detail::result_of::target<A0>
+ {
+ };
         
         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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
- 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48 , A49 const& a49) const
+ typename detail::result_of::target<A0>::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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48 , A49 const& a49) const
         {
- return result_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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx) , eval(a48, ctx) , eval(a49, ctx));
+ return
+ typename detail::result_of::target<A0>::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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx) , eval(a48, ctx) , eval(a49, ctx)
+ );
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,21 +5,21 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if !defined(PHOENIX_PREPROCESSED_NEW)
-#define PHOENIX_PREPROCESSED_NEW
+#if !defined(BOOST_PHOENIX_PREPROCESSED_NEW)
+#define BOOST_PHOENIX_PREPROCESSED_NEW
 
-#if PHOENIX_LIMIT <= 10
+#if BOOST_PHOENIX_LIMIT <= 10
 #include <boost/phoenix/object/detail/preprocessed/new_10.hpp>
-#elif PHOENIX_LIMIT <= 20
+#elif BOOST_PHOENIX_LIMIT <= 20
 #include <boost/phoenix/object/detail/preprocessed/new_20.hpp>
-#elif PHOENIX_LIMIT <= 30
+#elif BOOST_PHOENIX_LIMIT <= 30
 #include <boost/phoenix/object/detail/preprocessed/new_30.hpp>
-#elif PHOENIX_LIMIT <= 40
+#elif BOOST_PHOENIX_LIMIT <= 40
 #include <boost/phoenix/object/detail/preprocessed/new_40.hpp>
-#elif PHOENIX_LIMIT <= 50
+#elif BOOST_PHOENIX_LIMIT <= 50
 #include <boost/phoenix/object/detail/preprocessed/new_50.hpp>
 #else
-#error "PHOENIX_LIMIT out of bounds for preprocessed headers"
+#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
 #endif
 
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,21 +5,21 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if !defined(PHOENIX_PREPROCESSED_NEW_EVAL)
-#define PHOENIX_PREPROCESSED_NEW_EVAL
+#if !defined(BOOST_PHOENIX_PREPROCESSED_NEW_EVAL)
+#define BOOST_PHOENIX_PREPROCESSED_NEW_EVAL
 
-#if PHOENIX_LIMIT <= 10
+#if BOOST_PHOENIX_LIMIT <= 10
 #include <boost/phoenix/object/detail/preprocessed/new_eval_10.hpp>
-#elif PHOENIX_LIMIT <= 20
+#elif BOOST_PHOENIX_LIMIT <= 20
 #include <boost/phoenix/object/detail/preprocessed/new_eval_20.hpp>
-#elif PHOENIX_LIMIT <= 30
+#elif BOOST_PHOENIX_LIMIT <= 30
 #include <boost/phoenix/object/detail/preprocessed/new_eval_30.hpp>
-#elif PHOENIX_LIMIT <= 40
+#elif BOOST_PHOENIX_LIMIT <= 40
 #include <boost/phoenix/object/detail/preprocessed/new_eval_40.hpp>
-#elif PHOENIX_LIMIT <= 50
+#elif BOOST_PHOENIX_LIMIT <= 50
 #include <boost/phoenix/object/detail/preprocessed/new_eval_50.hpp>
 #else
-#error "PHOENIX_LIMIT out of bounds for preprocessed headers"
+#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
 #endif
 
 #endif

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -15,7 +15,11 @@
         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 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;
         };
@@ -23,8 +27,11 @@
         typename result<new_eval(Context const &, A0 const& , A1 const&)>::type
         operator()(Context const & ctx, A0 const& a0 , A1 const& a1) const
         {
- return new typename result<new_eval(Context const &, A0 const& , A1 const&)>::construct_type(
- eval(a1, ctx)
+ return
+ new typename result<
+ new_eval(Context const &, A0 const& , A1 const&)
+ >::construct_type(
+ eval(a1, ctx)
                 );
         }
     
@@ -37,7 +44,11 @@
         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 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;
         };
@@ -45,8 +56,11 @@
         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 typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const&)>::construct_type(
- 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)
                 );
         }
     
@@ -59,7 +73,11 @@
         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 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;
         };
@@ -67,8 +85,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -81,7 +102,11 @@
         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 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;
         };
@@ -89,8 +114,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -103,7 +131,11 @@
         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 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;
         };
@@ -111,8 +143,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -125,7 +160,11 @@
         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 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;
         };
@@ -133,8 +172,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -147,7 +189,11 @@
         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 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;
         };
@@ -155,8 +201,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -169,7 +218,11 @@
         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 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;
         };
@@ -177,8 +230,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -191,7 +247,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>
         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 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;
         };
@@ -199,7 +259,10 @@
         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 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)
+ 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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -15,7 +15,11 @@
         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 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;
         };
@@ -23,8 +27,11 @@
         typename result<new_eval(Context const &, A0 const& , A1 const&)>::type
         operator()(Context const & ctx, A0 const& a0 , A1 const& a1) const
         {
- return new typename result<new_eval(Context const &, A0 const& , A1 const&)>::construct_type(
- eval(a1, ctx)
+ return
+ new typename result<
+ new_eval(Context const &, A0 const& , A1 const&)
+ >::construct_type(
+ eval(a1, ctx)
                 );
         }
     
@@ -37,7 +44,11 @@
         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 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;
         };
@@ -45,8 +56,11 @@
         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 typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const&)>::construct_type(
- 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)
                 );
         }
     
@@ -59,7 +73,11 @@
         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 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;
         };
@@ -67,8 +85,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -81,7 +102,11 @@
         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 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;
         };
@@ -89,8 +114,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -103,7 +131,11 @@
         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 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;
         };
@@ -111,8 +143,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -125,7 +160,11 @@
         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 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;
         };
@@ -133,8 +172,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -147,7 +189,11 @@
         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 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;
         };
@@ -155,8 +201,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -169,7 +218,11 @@
         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 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;
         };
@@ -177,8 +230,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -191,7 +247,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>
         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 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;
         };
@@ -199,8 +259,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -213,7 +276,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)>
         {
- typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ 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;
         };
@@ -221,8 +288,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -235,7 +305,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 , 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 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;
         };
@@ -243,8 +317,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -257,7 +334,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 , 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 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;
         };
@@ -265,8 +346,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -279,7 +363,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 , 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 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;
         };
@@ -287,8 +375,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -301,7 +392,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 , 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 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;
         };
@@ -309,8 +404,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -323,7 +421,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 , 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 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;
         };
@@ -331,8 +433,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -345,7 +450,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 , 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 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;
         };
@@ -353,8 +462,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -367,7 +479,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 , 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 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;
         };
@@ -375,8 +491,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -389,7 +508,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 , 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 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;
         };
@@ -397,8 +520,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -411,7 +537,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 , 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 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;
         };
@@ -419,7 +549,10 @@
         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 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)
+ 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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -15,7 +15,11 @@
         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 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;
         };
@@ -23,8 +27,11 @@
         typename result<new_eval(Context const &, A0 const& , A1 const&)>::type
         operator()(Context const & ctx, A0 const& a0 , A1 const& a1) const
         {
- return new typename result<new_eval(Context const &, A0 const& , A1 const&)>::construct_type(
- eval(a1, ctx)
+ return
+ new typename result<
+ new_eval(Context const &, A0 const& , A1 const&)
+ >::construct_type(
+ eval(a1, ctx)
                 );
         }
     
@@ -37,7 +44,11 @@
         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 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;
         };
@@ -45,8 +56,11 @@
         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 typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const&)>::construct_type(
- 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)
                 );
         }
     
@@ -59,7 +73,11 @@
         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 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;
         };
@@ -67,8 +85,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -81,7 +102,11 @@
         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 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;
         };
@@ -89,8 +114,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -103,7 +131,11 @@
         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 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;
         };
@@ -111,8 +143,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -125,7 +160,11 @@
         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 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;
         };
@@ -133,8 +172,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -147,7 +189,11 @@
         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 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;
         };
@@ -155,8 +201,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -169,7 +218,11 @@
         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 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;
         };
@@ -177,8 +230,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -191,7 +247,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>
         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 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;
         };
@@ -199,8 +259,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -213,7 +276,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)>
         {
- typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ 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;
         };
@@ -221,8 +288,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -235,7 +305,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 , 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 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;
         };
@@ -243,8 +317,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -257,7 +334,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 , 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 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;
         };
@@ -265,8 +346,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -279,7 +363,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 , 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 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;
         };
@@ -287,8 +375,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -301,7 +392,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 , 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 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;
         };
@@ -309,8 +404,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -323,7 +421,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 , 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 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;
         };
@@ -331,8 +433,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -345,7 +450,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 , 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 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;
         };
@@ -353,8 +462,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -367,7 +479,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 , 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 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;
         };
@@ -375,8 +491,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -389,7 +508,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 , 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 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;
         };
@@ -397,8 +520,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -411,7 +537,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 , 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 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;
         };
@@ -419,8 +549,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -433,7 +566,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 , 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 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;
         };
@@ -441,8 +578,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -455,7 +595,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 , 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 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;
         };
@@ -463,8 +607,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -477,7 +624,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 , 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 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;
         };
@@ -485,8 +636,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -499,7 +653,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 , 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 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;
         };
@@ -507,8 +665,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -521,7 +682,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 , 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 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;
         };
@@ -529,8 +694,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -543,7 +711,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 , 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 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;
         };
@@ -551,8 +723,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -565,7 +740,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 , 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 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;
         };
@@ -573,8 +752,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -587,7 +769,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 , 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 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;
         };
@@ -595,8 +781,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -609,7 +798,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 , 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 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;
         };
@@ -617,8 +810,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -631,7 +827,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 , 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 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;
         };
@@ -639,7 +839,10 @@
         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 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)
+ 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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -15,7 +15,11 @@
         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 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;
         };
@@ -23,8 +27,11 @@
         typename result<new_eval(Context const &, A0 const& , A1 const&)>::type
         operator()(Context const & ctx, A0 const& a0 , A1 const& a1) const
         {
- return new typename result<new_eval(Context const &, A0 const& , A1 const&)>::construct_type(
- eval(a1, ctx)
+ return
+ new typename result<
+ new_eval(Context const &, A0 const& , A1 const&)
+ >::construct_type(
+ eval(a1, ctx)
                 );
         }
     
@@ -37,7 +44,11 @@
         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 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;
         };
@@ -45,8 +56,11 @@
         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 typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const&)>::construct_type(
- 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)
                 );
         }
     
@@ -59,7 +73,11 @@
         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 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;
         };
@@ -67,8 +85,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -81,7 +102,11 @@
         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 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;
         };
@@ -89,8 +114,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -103,7 +131,11 @@
         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 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;
         };
@@ -111,8 +143,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -125,7 +160,11 @@
         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 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;
         };
@@ -133,8 +172,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -147,7 +189,11 @@
         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 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;
         };
@@ -155,8 +201,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -169,7 +218,11 @@
         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 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;
         };
@@ -177,8 +230,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -191,7 +247,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>
         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 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;
         };
@@ -199,8 +259,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -213,7 +276,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)>
         {
- typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ 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;
         };
@@ -221,8 +288,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -235,7 +305,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 , 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 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;
         };
@@ -243,8 +317,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -257,7 +334,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 , 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 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;
         };
@@ -265,8 +346,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -279,7 +363,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 , 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 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;
         };
@@ -287,8 +375,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -301,7 +392,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 , 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 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;
         };
@@ -309,8 +404,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -323,7 +421,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 , 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 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;
         };
@@ -331,8 +433,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -345,7 +450,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 , 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 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;
         };
@@ -353,8 +462,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -367,7 +479,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 , 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 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;
         };
@@ -375,8 +491,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -389,7 +508,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 , 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 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;
         };
@@ -397,8 +520,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -411,7 +537,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 , 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 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;
         };
@@ -419,8 +549,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -433,7 +566,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 , 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 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;
         };
@@ -441,8 +578,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -455,7 +595,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 , 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 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;
         };
@@ -463,8 +607,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -477,7 +624,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 , 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 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;
         };
@@ -485,8 +636,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -499,7 +653,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 , 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 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;
         };
@@ -507,8 +665,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -521,7 +682,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 , 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 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;
         };
@@ -529,8 +694,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -543,7 +711,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 , 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 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;
         };
@@ -551,8 +723,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -565,7 +740,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 , 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 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;
         };
@@ -573,8 +752,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -587,7 +769,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 , 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 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;
         };
@@ -595,8 +781,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -609,7 +798,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 , 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 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;
         };
@@ -617,8 +810,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -631,7 +827,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 , 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 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;
         };
@@ -639,8 +839,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -653,7 +856,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 , 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 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;
         };
@@ -661,8 +868,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -675,7 +885,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 , 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 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;
         };
@@ -683,8 +897,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -697,7 +914,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 , 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 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;
         };
@@ -705,8 +926,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -719,7 +943,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 , 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 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;
         };
@@ -727,8 +955,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -741,7 +972,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 , 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 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;
         };
@@ -749,8 +984,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -763,7 +1001,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 , 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 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;
         };
@@ -771,8 +1013,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -785,7 +1030,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 , 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 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;
         };
@@ -793,8 +1042,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -807,7 +1059,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 , 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 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;
         };
@@ -815,8 +1071,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -829,7 +1088,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 , 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 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;
         };
@@ -837,8 +1100,11 @@
         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 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)
+ 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)
                 );
         }
     
@@ -851,7 +1117,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 , 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 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;
         };
@@ -859,7 +1129,10 @@
         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 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)
+ 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/detail/preprocessed/new_eval_50.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_50.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_50.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -12,29 +12,26 @@
     
     
     
- template <typename Context, typename A0>
- result_type
- operator()(Context& ctx, A0 const& a0) const
+ template <typename This, typename Context, typename A0 , typename A1>
+ struct result<This(Context, A0 , A1)>
         {
- return
- new construct_type(
- eval(a0, ctx)
- );
- }
-
-
-
-
-
-
-
+ 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)
+ new typename result<
+ new_eval(Context const &, A0 const& , A1 const&)
+ >::construct_type(
+ eval(a1, ctx)
                 );
         }
     
@@ -44,13 +41,26 @@
     
     
     
+ 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)
+ new typename result<
+ new_eval(Context const &, A0 const& , A1 const& , A2 const&)
+ >::construct_type(
+ eval(a1, ctx) , eval(a2, ctx)
                 );
         }
     
@@ -60,13 +70,26 @@
     
     
     
+ 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)
+ 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 +99,26 @@
     
     
     
+ 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)
+ 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 +128,26 @@
     
     
     
+ 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)
+ 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 +157,26 @@
     
     
     
+ 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)
+ 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 +186,26 @@
     
     
     
+ 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)
+ 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 +215,26 @@
     
     
     
+ 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)
+ 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 +244,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>
+ 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)
+ 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 +273,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>
+ 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)
+ 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 +302,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>
+ 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)
+ 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 +331,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>
+ 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)
+ 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 +360,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>
+ 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)
+ 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 +389,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>
+ 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)
+ 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 +418,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>
+ 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)
+ 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 +447,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>
+ 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)
+ 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 +476,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>
+ 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)
+ 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 +505,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>
+ 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)
+ 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 +534,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>
+ 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)
+ 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 +563,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>
+ 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)
+ 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 +592,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>
+ 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)
+ 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 +621,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>
+ 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)
+ 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 +650,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>
+ 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)
+ 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 +679,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>
+ 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)
+ 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 +708,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)>
+ {
+ 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)
+ 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 +737,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 , 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)
+ 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 +766,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 , 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)
+ 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 +795,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 , 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)
+ 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 +824,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 , 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)
+ 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 +853,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 , 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)
+ 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 +882,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 , 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)
+ 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 +911,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 , 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)
+ 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 +940,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 , 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)
+ 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 +969,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 , 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)
+ 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 +998,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 , 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)
+ 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 +1027,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 , 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)
+ 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 +1056,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 , 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)
+ 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 +1085,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 , 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)
+ 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,13 +1114,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 , 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)
+ 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)
                 );
         }
     
@@ -652,13 +1143,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 , 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 A40>
+ 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 , A40)>
+ {
+ 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 , typename A40>
- 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 , A40 const& a40) 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& , A40 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 , A40 const& a40) 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) , eval(a40, ctx)
+ 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& , A40 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) , eval(a40, ctx)
                 );
         }
     
@@ -668,13 +1172,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 , 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 A40 , typename A41>
+ 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 , A40 , A41)>
+ {
+ 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 , typename A40 , typename A41>
- 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 , A40 const& a40 , A41 const& a41) 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& , A40 const& , A41 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 , A40 const& a40 , A41 const& a41) 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) , eval(a40, ctx) , eval(a41, ctx)
+ 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& , A40 const& , A41 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) , eval(a40, ctx) , eval(a41, ctx)
                 );
         }
     
@@ -684,13 +1201,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 , 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 A40 , typename A41 , typename A42>
+ 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 , A40 , A41 , A42)>
+ {
+ 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 , typename A40 , typename A41 , typename A42>
- 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 , A40 const& a40 , A41 const& a41 , A42 const& a42) 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& , A40 const& , A41 const& , A42 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 , A40 const& a40 , A41 const& a41 , A42 const& a42) 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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx)
+ 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& , A40 const& , A41 const& , A42 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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx)
                 );
         }
     
@@ -700,13 +1230,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 , 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 A40 , typename A41 , typename A42 , typename A43>
+ 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 , A40 , A41 , A42 , A43)>
+ {
+ 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 , typename A40 , typename A41 , typename A42 , typename A43>
- 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43) 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& , A40 const& , A41 const& , A42 const& , A43 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43) 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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx)
+ 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& , A40 const& , A41 const& , A42 const& , A43 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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx)
                 );
         }
     
@@ -716,13 +1259,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 , 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 A40 , typename A41 , typename A42 , typename A43 , typename A44>
+ 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 , A40 , A41 , A42 , A43 , A44)>
+ {
+ 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44>
- 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44) 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44) 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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx)
+ 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx)
                 );
         }
     
@@ -732,13 +1288,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 , 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45)>
+ {
+ 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
- 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45) 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45) 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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx)
+ 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx)
                 );
         }
     
@@ -748,13 +1317,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 , 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46)>
+ {
+ 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
- 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46) 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46) 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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx)
+ 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx)
                 );
         }
     
@@ -764,13 +1346,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 , 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47)>
+ {
+ 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
- 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47) 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47) 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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx)
+ 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx)
                 );
         }
     
@@ -780,13 +1375,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 , 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48)>
+ {
+ 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
- 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48) 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 const& , A48 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48) 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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx) , eval(a48, ctx)
+ 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 const& , A48 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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx) , eval(a48, ctx)
                 );
         }
     
@@ -796,12 +1404,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 , 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 , A49)>
+ {
+ 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
- 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48 , A49 const& a49) 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 const& , A48 const& , A49 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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48 , A49 const& a49) 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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx) , eval(a48, ctx) , eval(a49, ctx)
+ 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 const& , A48 const& , A49 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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx) , eval(a48, ctx) , eval(a49, ctx)
                 );
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/target.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/target.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/target.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_OBJECT_DETAIL_CAST_TARGET_HPP
-#define PHOENIX_OBJECT_DETAIL_CAST_TARGET_HPP
+#ifndef BOOST_PHOENIX_OBJECT_DETAIL_CAST_TARGET_HPP
+#define BOOST_PHOENIX_OBJECT_DETAIL_CAST_TARGET_HPP
 
 namespace boost { namespace phoenix
 {

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_OBJECT_DYNAMIC_CAST_HPP
-#define PHOENIX_OBJECT_DYNAMIC_CAST_HPP
+#ifndef BOOST_PHOENIX_OBJECT_DYNAMIC_CAST_HPP
+#define BOOST_PHOENIX_OBJECT_DYNAMIC_CAST_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/call.hpp>
@@ -15,7 +15,7 @@
 #include <boost/phoenix/object/detail/target.hpp>
 #include <boost/proto/transform/lazy.hpp>
 
-PHOENIX_DEFINE_EXPRESSION(
+BOOST_PHOENIX_DEFINE_EXPRESSION(
     (boost)(phoenix)(dynamic_cast_)
   , (proto::terminal<detail::target<proto::_> >)
     (meta_grammar)

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_OBJECT_NEW_HPP
-#define PHOENIX_OBJECT_NEW_HPP
+#ifndef BOOST_PHOENIX_OBJECT_NEW_HPP
+#define BOOST_PHOENIX_OBJECT_NEW_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/expression.hpp>
@@ -16,11 +16,11 @@
 #include <boost/phoenix/support/iterate.hpp>
 #include <boost/preprocessor/repetition/repeat_from_to.hpp>
 
-PHOENIX_DEFINE_EXPRESSION_VARARG(
+BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG(
     (boost)(phoenix)(new_)
   , (proto::terminal<detail::target<proto::_> >)
     (meta_grammar)
- , PHOENIX_COMPOSITE_LIMIT
+ , BOOST_PHOENIX_COMPOSITE_LIMIT
 )
 
 namespace boost { namespace phoenix

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_OBJECT_REINTERPRET_CAST_HPP
-#define PHOENIX_OBJECT_REINTERPRET_CAST_HPP
+#ifndef BOOST_PHOENIX_OBJECT_REINTERPRET_CAST_HPP
+#define BOOST_PHOENIX_OBJECT_REINTERPRET_CAST_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/call.hpp>
@@ -15,7 +15,7 @@
 #include <boost/phoenix/object/detail/target.hpp>
 #include <boost/proto/transform/lazy.hpp>
 
-PHOENIX_DEFINE_EXPRESSION(
+BOOST_PHOENIX_DEFINE_EXPRESSION(
     (boost)(phoenix)(reinterpret_cast_)
   , (proto::terminal<detail::target<proto::_> >)
     (meta_grammar)

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_OBJECT_STATIC_CAST_HPP
-#define PHOENIX_OBJECT_STATIC_CAST_HPP
+#ifndef BOOST_PHOENIX_OBJECT_STATIC_CAST_HPP
+#define BOOST_PHOENIX_OBJECT_STATIC_CAST_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/call.hpp>
@@ -15,7 +15,7 @@
 #include <boost/phoenix/object/detail/target.hpp>
 #include <boost/proto/transform/lazy.hpp>
     
-PHOENIX_DEFINE_EXPRESSION(
+BOOST_PHOENIX_DEFINE_EXPRESSION(
     (boost)(phoenix)(static_cast_)
   , (proto::terminal<detail::target<proto::_> >)
     (meta_grammar)

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -6,8 +6,8 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#ifndef PHOENIX_OPERATOR_HPP
-#define PHOENIX_OPERATOR_HPP
+#ifndef BOOST_PHOENIX_OPERATOR_HPP
+#define BOOST_PHOENIX_OPERATOR_HPP
 
 #include <boost/phoenix/version.hpp>
 #include <boost/phoenix/operator/arithmetic.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/arithmetic.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/arithmetic.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/arithmetic.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,15 +5,15 @@
     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_OPERATOR_ARITHMETIC_HPP
-#define PHOENIX_OPERATOR_ARITHMETIC_HPP
+#ifndef BOOST_PHOENIX_OPERATOR_ARITHMETIC_HPP
+#define BOOST_PHOENIX_OPERATOR_ARITHMETIC_HPP
 
 #include <boost/phoenix/operator/detail/define_operator.hpp>
 #include <boost/phoenix/core/expression.hpp>
 
 namespace boost { namespace phoenix
 {
- PHOENIX_UNARY_OPERATORS(
+ BOOST_PHOENIX_UNARY_OPERATORS(
                 (negate)
                 (unary_plus)
                 (pre_inc)
@@ -22,7 +22,7 @@
                 (post_dec)
         )
         
- PHOENIX_BINARY_OPERATORS(
+ BOOST_PHOENIX_BINARY_OPERATORS(
                 (plus_assign)
                 (minus_assign)
                 (multiplies_assign)

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/bitwise.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/bitwise.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/bitwise.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,19 +5,19 @@
     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_OPERATOR_BITWISE_HPP
-#define PHOENIX_OPERATOR_BITWISE_HPP
+#ifndef BOOST_PHOENIX_OPERATOR_BITWISE_HPP
+#define BOOST_PHOENIX_OPERATOR_BITWISE_HPP
 
 #include <boost/phoenix/operator/detail/define_operator.hpp>
 #include <boost/phoenix/core/expression.hpp>
 
 namespace boost { namespace phoenix
 {
- PHOENIX_UNARY_OPERATORS(
+ BOOST_PHOENIX_UNARY_OPERATORS(
                 (complement)
         )
         
- PHOENIX_BINARY_OPERATORS(
+ BOOST_PHOENIX_BINARY_OPERATORS(
                 (bitwise_and_assign)
                 (bitwise_or_assign)
                 (bitwise_xor_assign)

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/comparision.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/comparision.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/comparision.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_OPERATOR_COMPARISION_HPP
-#define PHOENIX_OPERATOR_COMPARISION_HPP
+#ifndef BOOST_PHOENIX_OPERATOR_COMPARISION_HPP
+#define BOOST_PHOENIX_OPERATOR_COMPARISION_HPP
 
 #include <boost/phoenix/operator/detail/define_operator.hpp>
 #include <boost/phoenix/core/expression.hpp>
@@ -14,7 +14,7 @@
 namespace boost { namespace phoenix
 {
         
- PHOENIX_BINARY_OPERATORS(
+ BOOST_PHOENIX_BINARY_OPERATORS(
                 (equal_to)
                 (not_equal_to)
                 (less_equal)

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -6,63 +6,63 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#ifndef PHOENIX_DEFINE_OPERATOR_HPP
-#define PHOENIX_DEFINE_OPERATOR_HPP
+#ifndef BOOST_PHOENIX_DEFINE_OPERATOR_HPP
+#define BOOST_PHOENIX_DEFINE_OPERATOR_HPP
 
 #include <boost/phoenix/core/meta_grammar.hpp>
 #include <boost/preprocessor/seq/for_each.hpp>
 
-#define PHOENIX_UNARY_EXPRESSION(__, ___, name) \
+#define BOOST_PHOENIX_UNARY_EXPRESSION(__, ___, name) \
     template <typename Operand> \
     struct name \
         : expr<proto::tag::name, Operand> \
     {}; \
 /**/
 
-#define PHOENIX_UNARY_RULE(__, ___, name) \
+#define BOOST_PHOENIX_UNARY_RULE(__, ___, name) \
     struct name \
         : expression::name<meta_grammar> \
     {}; \
 /**/
 
-#define PHOENIX_BINARY_EXPRESSION(__, ___, name) \
+#define BOOST_PHOENIX_BINARY_EXPRESSION(__, ___, name) \
     template <typename Lhs, typename Rhs> \
     struct name \
         : expr<proto::tag::name, Lhs, Rhs> \
     {}; \
 /**/
 
-#define PHOENIX_BINARY_RULE(__, ___, name) \
+#define BOOST_PHOENIX_BINARY_RULE(__, ___, name) \
     struct name \
         : expression::name<meta_grammar, meta_grammar> \
     {}; \
 /**/
 
-#define PHOENIX_GRAMMAR(_, __, name) \
+#define BOOST_PHOENIX_GRAMMAR(_, __, name) \
     template <typename Dummy> \
     struct meta_grammar::case_<proto::tag::name, Dummy> \
         : enable_rule<rule::name, Dummy> \
     {}; \
 /**/
 
-#define PHOENIX_UNARY_OPERATORS(ops) \
+#define BOOST_PHOENIX_UNARY_OPERATORS(ops) \
     namespace expression { \
- BOOST_PP_SEQ_FOR_EACH(PHOENIX_UNARY_EXPRESSION, _, ops) \
+ BOOST_PP_SEQ_FOR_EACH(BOOST_PHOENIX_UNARY_EXPRESSION, _, ops) \
     } \
     namespace rule { \
- BOOST_PP_SEQ_FOR_EACH(PHOENIX_UNARY_RULE, _, ops) \
+ BOOST_PP_SEQ_FOR_EACH(BOOST_PHOENIX_UNARY_RULE, _, ops) \
     } \
- BOOST_PP_SEQ_FOR_EACH(PHOENIX_GRAMMAR, _, ops) \
+ BOOST_PP_SEQ_FOR_EACH(BOOST_PHOENIX_GRAMMAR, _, ops) \
 /**/
 
-#define PHOENIX_BINARY_OPERATORS(ops) \
+#define BOOST_PHOENIX_BINARY_OPERATORS(ops) \
     namespace expression { \
- BOOST_PP_SEQ_FOR_EACH(PHOENIX_BINARY_EXPRESSION, _, ops) \
+ BOOST_PP_SEQ_FOR_EACH(BOOST_PHOENIX_BINARY_EXPRESSION, _, ops) \
     } \
     namespace rule { \
- BOOST_PP_SEQ_FOR_EACH(PHOENIX_BINARY_RULE, _, ops) \
+ BOOST_PP_SEQ_FOR_EACH(BOOST_PHOENIX_BINARY_RULE, _, ops) \
     } \
- BOOST_PP_SEQ_FOR_EACH(PHOENIX_GRAMMAR, _, ops) \
+ BOOST_PP_SEQ_FOR_EACH(BOOST_PHOENIX_GRAMMAR, _, ops) \
 /**/
 
 #endif

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,12 +5,12 @@
     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 !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_OPERATOR_DETAIL_MEM_FUN_PTR_EVAL_RESULT_OF_HPP
-#define PHOENIX_OPERATOR_DETAIL_MEM_FUN_PTR_EVAL_RESULT_OF_HPP
+#ifndef BOOST_PHOENIX_OPERATOR_DETAIL_MEM_FUN_PTR_EVAL_RESULT_OF_HPP
+#define BOOST_PHOENIX_OPERATOR_DETAIL_MEM_FUN_PTR_EVAL_RESULT_OF_HPP
 
-#define PHOENIX_MEM_FUN_PTR_EVAL_RESULT_OF_CHILD(Z, N, D) \
+#define BOOST_PHOENIX_MEM_FUN_PTR_EVAL_RESULT_OF_CHILD(Z, N, D) \
             typedef \
                 typename \
                 evaluator::impl< \
@@ -21,26 +21,33 @@
                 BOOST_PP_CAT(child, N); \
         /**/
 
- #define PHOENIX_ITERATION_PARAMS \
- (3, (2, PHOENIX_LIMIT, \
+ #define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (2, BOOST_PHOENIX_LIMIT, \
                  <boost/phoenix/operator/detail/mem_fun_ptr_eval_result_of.hpp>))
- #include PHOENIX_ITERATE()
+ #include BOOST_PHOENIX_ITERATE()
 
-#undef PHOENIX_MEM_FUN_PTR_EVAL_RESULT_OF_CHILD
+#undef BOOST_PHOENIX_MEM_FUN_PTR_EVAL_RESULT_OF_CHILD
 
 #endif
 
 #else
 
- template <typename Context, PHOENIX_typename_A>
- struct mem_fun_ptr_eval<Context, PHOENIX_A>
+ template <typename Context, BOOST_PHOENIX_typename_A>
+ struct mem_fun_ptr_eval<Context, BOOST_PHOENIX_A>
         {
- BOOST_PP_REPEAT(PHOENIX_ITERATION, PHOENIX_MEM_FUN_PTR_EVAL_RESULT_OF_CHILD, _)
+ BOOST_PP_REPEAT(
+ BOOST_PHOENIX_ITERATION
+ , BOOST_PHOENIX_MEM_FUN_PTR_EVAL_RESULT_OF_CHILD
+ , _
+ )
 
             typedef
                 typename boost::result_of<
                     child1(
- BOOST_PP_ENUM_SHIFTED_PARAMS(PHOENIX_ITERATION, child)
+ BOOST_PP_ENUM_SHIFTED_PARAMS(
+ BOOST_PHOENIX_ITERATION
+ , child
+ )
                     )
>::type
                 type;

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/mem_fun_ptr_gen.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/mem_fun_ptr_gen.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/mem_fun_ptr_gen.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,7 +1,7 @@
 
-#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_OPERATOR_MEMBER_DETAIL_MEM_FUN_PTR_GEN_HPP
-#define PHOENIX_OPERATOR_MEMBER_DETAIL_MEM_FUN_PTR_GEN_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_OPERATOR_MEMBER_DETAIL_MEM_FUN_PTR_GEN_HPP
+#define BOOST_PHOENIX_OPERATOR_MEMBER_DETAIL_MEM_FUN_PTR_GEN_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
@@ -10,15 +10,15 @@
 #endif
 #else
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_OPERATOR_MEMBER_DETAIL_MEM_FUN_PTR_GEN_HPP
-#define PHOENIX_OPERATOR_MEMBER_DETAIL_MEM_FUN_PTR_GEN_HPP
+#ifndef BOOST_PHOENIX_OPERATOR_MEMBER_DETAIL_MEM_FUN_PTR_GEN_HPP
+#define BOOST_PHOENIX_OPERATOR_MEMBER_DETAIL_MEM_FUN_PTR_GEN_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/mem_fun_ptr_gen_" PHOENIX_LIMIT_STR ".hpp")
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/mem_fun_ptr_gen_" BOOST_PHOENIX_LIMIT_STR ".hpp")
 #endif
 
 /*==============================================================================
@@ -29,7 +29,7 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(preserve: 1)
 #endif
 
@@ -44,7 +44,7 @@
         namespace result_of
         {
             template <typename Object, typename MemPtr,
- PHOENIX_typename_A_void(PHOENIX_MEMBER_LIMIT)
+ BOOST_PHOENIX_typename_A_void(BOOST_PHOENIX_MEMBER_LIMIT)
                 , typename Dummy = void>
             struct mem_fun_ptr_gen;
 
@@ -57,13 +57,13 @@
                     , MemPtr>
             {};
 
-#define PHOENIX_ITERATE_RESULT_OF 1
-#define PHOENIX_ITERATION_PARAMS \
- (4, (1, PHOENIX_MEMBER_LIMIT, \
+#define BOOST_PHOENIX_ITERATE_RESULT_OF 1
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (4, (1, BOOST_PHOENIX_MEMBER_LIMIT, \
         <boost/phoenix/operator/detail/mem_fun_ptr_gen.hpp>, \
- PHOENIX_ITERATE_RESULT_OF))
-#include PHOENIX_ITERATE()
-#undef PHOENIX_ITERATE_RESULT_OF
+ BOOST_PHOENIX_ITERATE_RESULT_OF))
+#include BOOST_PHOENIX_ITERATE()
+#undef BOOST_PHOENIX_ITERATE_RESULT_OF
 
         }
 
@@ -82,13 +82,13 @@
                     tag::mem_fun_ptr, phoenix_domain>(obj, ptr);
             }
 
-#define PHOENIX_ITERATE_OPERATOR 2
-#define PHOENIX_ITERATION_PARAMS \
- (4, (1, PHOENIX_MEMBER_LIMIT, \
+#define BOOST_PHOENIX_ITERATE_OPERATOR 2
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (4, (1, BOOST_PHOENIX_MEMBER_LIMIT, \
         <boost/phoenix/operator/detail/mem_fun_ptr_gen.hpp>, \
- PHOENIX_ITERATE_OPERATOR))
-#include PHOENIX_ITERATE()
-#undef PHOENIX_ITERATE_OPERATOR
+ BOOST_PHOENIX_ITERATE_OPERATOR))
+#include BOOST_PHOENIX_ITERATE()
+#undef BOOST_PHOENIX_ITERATE_OPERATOR
 
             Object const& obj;
             MemPtr ptr;
@@ -98,7 +98,7 @@
     }
 }}
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
@@ -106,45 +106,45 @@
 
 #else
 
-#if BOOST_PP_ITERATION_FLAGS() == PHOENIX_ITERATE_RESULT_OF
+#if BOOST_PP_ITERATION_FLAGS() == BOOST_PHOENIX_ITERATE_RESULT_OF
 
- template <typename Object, typename MemPtr, PHOENIX_typename_A>
- struct mem_fun_ptr_gen<Object, MemPtr, PHOENIX_A>
+ template <typename Object, typename MemPtr, BOOST_PHOENIX_typename_A>
+ struct mem_fun_ptr_gen<Object, MemPtr, BOOST_PHOENIX_A>
                 : proto::result_of::make_expr<
                       tag::mem_fun_ptr
                     , phoenix_domain
                     , Object
                     , MemPtr
- , PHOENIX_A>
+ , BOOST_PHOENIX_A>
             {};
 
-#elif BOOST_PP_ITERATION_FLAGS() == PHOENIX_ITERATE_OPERATOR
+#elif BOOST_PP_ITERATION_FLAGS() == BOOST_PHOENIX_ITERATE_OPERATOR
 
- template <PHOENIX_typename_A>
+ template <BOOST_PHOENIX_typename_A>
             typename result_of::mem_fun_ptr_gen<
                 Object
               , MemPtr
- , PHOENIX_A
+ , BOOST_PHOENIX_A
>::type const
- operator()(PHOENIX_A_const_ref_a) const
+ operator()(BOOST_PHOENIX_A_const_ref_a) const
             {
                 return proto::make_expr<
- tag::mem_fun_ptr, phoenix_domain>(obj, ptr, PHOENIX_a);
+ tag::mem_fun_ptr, phoenix_domain>(obj, ptr, BOOST_PHOENIX_a);
             }
 
- template <PHOENIX_typename_A>
+ template <BOOST_PHOENIX_typename_A>
             typename result_of::mem_fun_ptr_gen<
                 Object
               , MemPtr
- , PHOENIX_A
+ , BOOST_PHOENIX_A
>::type const
- operator()(PHOENIX_A_ref_a) const
+ operator()(BOOST_PHOENIX_A_ref_a) const
             {
                 return proto::make_expr<
- tag::mem_fun_ptr, phoenix_domain>(obj, ptr, PHOENIX_a);
+ tag::mem_fun_ptr, phoenix_domain>(obj, ptr, BOOST_PHOENIX_a);
             }
 
 #endif
 #endif
 
-#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,21 +5,21 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if !defined(PHOENIX_PREPROCESSED_MEM_FUN_PTR_GEN)
-#define PHOENIX_PREPROCESSED_MEM_FUN_PTR_GEN
+#if !defined(BOOST_PHOENIX_PREPROCESSED_MEM_FUN_PTR_GEN)
+#define BOOST_PHOENIX_PREPROCESSED_MEM_FUN_PTR_GEN
 
-#if PHOENIX_LIMIT <= 10
+#if BOOST_PHOENIX_LIMIT <= 10
 #include <boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_10.hpp>
-#elif PHOENIX_LIMIT <= 20
+#elif BOOST_PHOENIX_LIMIT <= 20
 #include <boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_20.hpp>
-#elif PHOENIX_LIMIT <= 30
+#elif BOOST_PHOENIX_LIMIT <= 30
 #include <boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_30.hpp>
-#elif PHOENIX_LIMIT <= 40
+#elif BOOST_PHOENIX_LIMIT <= 40
 #include <boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_40.hpp>
-#elif PHOENIX_LIMIT <= 50
+#elif BOOST_PHOENIX_LIMIT <= 50
 #include <boost/phoenix/operator/detail/preprocessed/mem_fun_ptr_gen_50.hpp>
 #else
-#error "PHOENIX_LIMIT out of bounds for preprocessed headers"
+#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
 #endif
 
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/undef_operator.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/undef_operator.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/undef_operator.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,10 +1,9 @@
 
-#undef PHOENIX_UNARY_RULE
-#undef PHOENIX_BINARY_RULE
-#undef PHOENIX_UNARY_EXPRESSION
-#undef PHOENIX_BINARY_EXPRESSION
-#undef PHOENIX_GRAMMAR
-#undef PHOENIX_UNARY_OPERATORS
-#undef PHOENIX_BINARY_OPERATORS
-
-#undef PHOENIX_DEFINE_OPERATOR_HPP
+#undef BOOST_PHOENIX_UNARY_RULE
+#undef BOOST_PHOENIX_BINARY_RULE
+#undef BOOST_PHOENIX_UNARY_EXPRESSION
+#undef BOOST_PHOENIX_BINARY_EXPRESSION
+#undef BOOST_PHOENIX_GRAMMAR
+#undef BOOST_PHOENIX_UNARY_OPERATORS
+#undef BOOST_PHOENIX_BINARY_OPERATORS
+#undef BOOST_PHOENIX_DEFINE_OPERATOR_HPP

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_OPERATOR_IF_ELSE_HPP
-#define PHOENIX_OPERATOR_IF_ELSE_HPP
+#ifndef BOOST_PHOENIX_OPERATOR_IF_ELSE_HPP
+#define BOOST_PHOENIX_OPERATOR_IF_ELSE_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/meta_grammar.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/io.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/io.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/io.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_OPERATOR_IO_HPP
-#define PHOENIX_OPERATOR_IO_HPP
+#ifndef BOOST_PHOENIX_OPERATOR_IO_HPP
+#define BOOST_PHOENIX_OPERATOR_IO_HPP
 
 #include <iosfwd>
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/logical.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/logical.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/logical.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_OPERATOR_LOGICAL_HPP
-#define PHOENIX_OPERATOR_LOGICAL_HPP
+#ifndef BOOST_PHOENIX_OPERATOR_LOGICAL_HPP
+#define BOOST_PHOENIX_OPERATOR_LOGICAL_HPP
 
 #include <boost/phoenix/operator/detail/define_operator.hpp>
 #include <boost/phoenix/core/expression.hpp>
@@ -14,10 +14,10 @@
 namespace boost { namespace phoenix
 {
         
- PHOENIX_UNARY_OPERATORS(
+ BOOST_PHOENIX_UNARY_OPERATORS(
                 (logical_not)
         )
- PHOENIX_BINARY_OPERATORS(
+ BOOST_PHOENIX_BINARY_OPERATORS(
                 (logical_and)
                 (logical_or)
         )

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,7 +1,7 @@
 
-#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_OPERATOR_MEMBER_HPP
-#define PHOENIX_OPERATOR_MEMBER_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_OPERATOR_MEMBER_HPP
+#define BOOST_PHOENIX_OPERATOR_MEMBER_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/get_pointer.hpp>
@@ -18,10 +18,10 @@
 #endif
 #else
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_OPERATOR_MEMBER_HPP
-#define PHOENIX_OPERATOR_MEMBER_HPP
+#ifndef BOOST_PHOENIX_OPERATOR_MEMBER_HPP
+#define BOOST_PHOENIX_OPERATOR_MEMBER_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/get_pointer.hpp>
@@ -33,8 +33,8 @@
 #include <boost/phoenix/support/iterate.hpp>
 #include <boost/type_traits/is_member_function_pointer.hpp>
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/member_" PHOENIX_LIMIT_STR ".hpp")
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/member_" BOOST_PHOENIX_LIMIT_STR ".hpp")
 #endif
 
 /*==============================================================================
@@ -45,23 +45,21 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(preserve: 1)
 #endif
 
 #include <boost/phoenix/operator/detail/define_operator.hpp>
 
-PHOENIX_DEFINE_EXPRESSION_VARARG(
+BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG(
     (boost)(phoenix)(mem_fun_ptr)
   , (meta_grammar)
- (meta_grammar)
- (meta_grammar)
- , PHOENIX_LIMIT
+ , BOOST_PHOENIX_LIMIT
 )
 
 namespace boost { namespace phoenix
 {
- PHOENIX_BINARY_OPERATORS(
+ BOOST_PHOENIX_BINARY_OPERATORS(
         (mem_ptr)
     )
 
@@ -79,7 +77,7 @@
     {
         template <
             typename Context
- , PHOENIX_typename_A_void(PHOENIX_LIMIT)
+ , BOOST_PHOENIX_typename_A_void(BOOST_PHOENIX_LIMIT)
           , typename Dummy = void
>
         struct mem_fun_ptr_eval;
@@ -92,18 +90,18 @@
         template<typename Sig>
         struct result;
 
- #define PHOENIX_MEMBER_EVAL(Z, N, D) \
+ #define BOOST_PHOENIX_MEMBER_EVAL(Z, N, D) \
         BOOST_PP_COMMA_IF(BOOST_PP_NOT(BOOST_PP_EQUAL(N, 2))) \
- eval(BOOST_PP_CAT(a, N), ctx) \
+ eval(BOOST_PP_CAT(a, N), ctx) \
     /**/
 
- #define PHOENIX_ITERATION_PARAMS \
- (4, (2, PHOENIX_LIMIT, \
+ #define BOOST_PHOENIX_ITERATION_PARAMS \
+ (4, (2, BOOST_PHOENIX_LIMIT, \
         <boost/phoenix/operator/member.hpp>, \
- PHOENIX_ITERATE_OPERATOR)) \
+ BOOST_PHOENIX_ITERATE_OPERATOR)) \
     /**/
- #include PHOENIX_ITERATE()
- #undef PHOENIX_MEMBER_EVAL
+ #include BOOST_PHOENIX_ITERATE()
+ #undef BOOST_PHOENIX_MEMBER_EVAL
     };
 
     template <typename Dummy>
@@ -114,28 +112,28 @@
 
 #include <boost/phoenix/operator/detail/undef_operator.hpp>
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
 #endif
 
-#else // PHOENIX_IS_ITERATING
+#else // BOOST_PHOENIX_IS_ITERATING
 
- 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, BOOST_PHOENIX_typename_A>
+ struct result<This(Context, BOOST_PHOENIX_A)>
+ : result<This(Context, BOOST_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 This, typename Context, BOOST_PHOENIX_typename_A>
+ struct result<This(Context, BOOST_PHOENIX_A_ref)>
+ : result_of::mem_fun_ptr_eval<Context, BOOST_PHOENIX_A>
         {};
 
- template <typename Context, PHOENIX_typename_A>
- typename result_of::mem_fun_ptr_eval<Context, PHOENIX_A>::type
+ template <typename Context, BOOST_PHOENIX_typename_A>
+ typename result_of::mem_fun_ptr_eval<Context, BOOST_PHOENIX_A>::type
         operator()(
- Context const & ctx, PHOENIX_A_const_ref_a
+ Context const & ctx, BOOST_PHOENIX_A_const_ref_a
         ) const
         {
             return
@@ -145,9 +143,9 @@
                 )(
                     BOOST_PP_REPEAT_FROM_TO(
                         2
- , PHOENIX_ITERATION
- , PHOENIX_MEMBER_EVAL
- , PHOENIX_ITERATION
+ , BOOST_PHOENIX_ITERATION
+ , BOOST_PHOENIX_MEMBER_EVAL
+ , BOOST_PHOENIX_ITERATION
                     )
                 );
         }
@@ -155,4 +153,4 @@
 
 #endif
 
-#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,21 +5,21 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if !defined(PHOENIX_PREPROCESSED_MEMBER)
-#define PHOENIX_PREPROCESSED_MEMBER
+#if !defined(BOOST_PHOENIX_PREPROCESSED_MEMBER)
+#define BOOST_PHOENIX_PREPROCESSED_MEMBER
 
-#if PHOENIX_LIMIT <= 10
+#if BOOST_PHOENIX_LIMIT <= 10
 #include <boost/phoenix/operator/preprocessed/member_10.hpp>
-#elif PHOENIX_LIMIT <= 20
+#elif BOOST_PHOENIX_LIMIT <= 20
 #include <boost/phoenix/operator/preprocessed/member_20.hpp>
-#elif PHOENIX_LIMIT <= 30
+#elif BOOST_PHOENIX_LIMIT <= 30
 #include <boost/phoenix/operator/preprocessed/member_30.hpp>
-#elif PHOENIX_LIMIT <= 40
+#elif BOOST_PHOENIX_LIMIT <= 40
 #include <boost/phoenix/operator/preprocessed/member_40.hpp>
-#elif PHOENIX_LIMIT <= 50
+#elif BOOST_PHOENIX_LIMIT <= 50
 #include <boost/phoenix/operator/preprocessed/member_50.hpp>
 #else
-#error "PHOENIX_LIMIT out of bounds for preprocessed headers"
+#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
 #endif
 
 #endif

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-21 06:53:02 EST (Mon, 21 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 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 , Dummy > {}; } }
 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> : enable_rule<rule::mem_ptr> {};
+ namespace expression { template <typename Lhs, typename Rhs> struct mem_ptr : expr<proto::tag::mem_ptr, Lhs, Rhs> {}; } namespace rule { struct mem_ptr : expression::mem_ptr<meta_grammar, meta_grammar> {}; } template <typename Dummy> struct meta_grammar::case_<proto::tag::mem_ptr, Dummy> : enable_rule<rule::mem_ptr, Dummy> {};
     template <typename Object, typename MemPtr>
     typename enable_if<
         is_member_function_pointer<MemPtr>
@@ -199,12 +199,9 @@
         };
     }
     struct mem_fun_ptr_eval
- : proto::callable
     {
         template<typename Sig>
         struct result;
-
-
     
     
     
@@ -478,7 +475,6 @@
     };
     template <typename Dummy>
     struct default_actions::when<rule::mem_fun_ptr, Dummy>
-
         : 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-21 06:53:02 EST (Mon, 21 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 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 , Dummy > {}; } }
 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> : enable_rule<rule::mem_ptr> {};
+ namespace expression { template <typename Lhs, typename Rhs> struct mem_ptr : expr<proto::tag::mem_ptr, Lhs, Rhs> {}; } namespace rule { struct mem_ptr : expression::mem_ptr<meta_grammar, meta_grammar> {}; } template <typename Dummy> struct meta_grammar::case_<proto::tag::mem_ptr, Dummy> : enable_rule<rule::mem_ptr, Dummy> {};
     template <typename Object, typename MemPtr>
     typename enable_if<
         is_member_function_pointer<MemPtr>
@@ -389,12 +389,9 @@
         };
     }
     struct mem_fun_ptr_eval
- : proto::callable
     {
         template<typename Sig>
         struct result;
-
-
     
     
     
@@ -968,7 +965,6 @@
     };
     template <typename Dummy>
     struct default_actions::when<rule::mem_fun_ptr, Dummy>
-
         : 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-21 06:53:02 EST (Mon, 21 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 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 , Dummy > {}; } }
 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> : enable_rule<rule::mem_ptr> {};
+ namespace expression { template <typename Lhs, typename Rhs> struct mem_ptr : expr<proto::tag::mem_ptr, Lhs, Rhs> {}; } namespace rule { struct mem_ptr : expression::mem_ptr<meta_grammar, meta_grammar> {}; } template <typename Dummy> struct meta_grammar::case_<proto::tag::mem_ptr, Dummy> : enable_rule<rule::mem_ptr, Dummy> {};
     template <typename Object, typename MemPtr>
     typename enable_if<
         is_member_function_pointer<MemPtr>
@@ -579,12 +579,9 @@
         };
     }
     struct mem_fun_ptr_eval
- : proto::callable
     {
         template<typename Sig>
         struct result;
-
-
     
     
     
@@ -1458,7 +1455,6 @@
     };
     template <typename Dummy>
     struct default_actions::when<rule::mem_fun_ptr, Dummy>
-
         : 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-21 06:53:02 EST (Mon, 21 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 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 , Dummy > {}; } }
 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> : enable_rule<rule::mem_ptr> {};
+ namespace expression { template <typename Lhs, typename Rhs> struct mem_ptr : expr<proto::tag::mem_ptr, Lhs, Rhs> {}; } namespace rule { struct mem_ptr : expression::mem_ptr<meta_grammar, meta_grammar> {}; } template <typename Dummy> struct meta_grammar::case_<proto::tag::mem_ptr, Dummy> : enable_rule<rule::mem_ptr, Dummy> {};
     template <typename Object, typename MemPtr>
     typename enable_if<
         is_member_function_pointer<MemPtr>
@@ -769,12 +769,9 @@
         };
     }
     struct mem_fun_ptr_eval
- : proto::callable
     {
         template<typename Sig>
         struct result;
-
-
     
     
     
@@ -1948,7 +1945,6 @@
     };
     template <typename Dummy>
     struct default_actions::when<rule::mem_fun_ptr, Dummy>
-
         : call<mem_fun_ptr_eval>
     {};
 }}

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_50.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_50.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_50.hpp 2011-02-21 06:53:02 EST (Mon, 21 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 A40 = void , typename A41 = vo
id , typename A42 = void , typename A43 = void , typename A44 = void , typename A45 = void , typename A46 = void , typename A47 = void , typename A48 = void , typename A49 = 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 , 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 A
3 , typename A4 , typename A5 , 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 A
0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , 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_f
un_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 A1
7 , 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 , A
17 , 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 , typen
ame A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , 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 A1
5 , 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 A2
7 , 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 , A
13 , 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 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , 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 , A
17 , 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 , A
21 , 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 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 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , 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 > {}; 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 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 , A
35 , A36 , A37 , A38 , A39 > : 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 , A39 > {}; 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 , typename A40 > 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 , A39 , A40 > : 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 , A39 , A40 > {}; 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 , typename A40 ,
 typename A41 > 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 , A39 , A40 , A41 > : 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 , A39 , A40 , A41 > {}; 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 , typen
ame A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 > 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 , A39 , A40 , A41 , A42 > : 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 , A39 , A40 , A41 , A42 > {}; 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 , typename A40 , typename A41 , typename A42 , typename A43 > 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 , A39 , A40 , A41 , A42 , A43 > : 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 , A39 , A40 , A41 , A42 , A43 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typenam
e A6 , typename A7 , typename A8 , typename A9 , 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 > 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 , A39 , A40 , A41 , A42 , A43 , A44 > : 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 , A
25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39 , A40 , A41 , A42 , A43 , A44 > {}; 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 > 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 , A
33 , A34 , A35 , A36 , A37 , A38 , A39 , A40 , A41 , A42 , A43 , A44 , A45 > : 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 , A39 , A40 , A41 , A42 , A43 , A44 , A45 > {}; 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 , typename A40 , typename A41 , typename A42 , ty
pename A43 , typename A44 , typename A45 , typename A46 > 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 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46 > : 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 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46 > {}; 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 > 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 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 > : 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 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 > {}; template < typename A0 , typename A1 , typename A2 , typename A
3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 > 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 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 > : 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 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 > {}; } 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 , Dummy > {}; } }
 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 A40 = void , typename A41 = void , typename A42 = void , typenam
e A43 = void , typename A44 = void , typename A45 = void , typename A46 = void , typename A47 = void , typename A48 = void , typename A49 = 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 , 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 , typena
me A1 , typename A2 , typename A3 , 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 , ty
pename 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 , ty
pename A3 , typename A4 , typename A5 , typename A6 , typename A7 , 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 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 , typ
ename 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< 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 , A32 > {}; 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 , A1
4 , 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 , typename A8 , typename A9 , 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 , A2
6 , 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 , A2
1 , 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 , typename A7 , typename A8 , typename A9 , 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 > {}; 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 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 , A39 > : exp
r< 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 , A39 > {}; 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 , typename A40 > 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 , A2
3 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39 , A40 > : 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 , A39 , A40 > {}; 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 , typename A40 , typename A41 > 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 , A39 , A40 , A41 > : 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 , A39 , A40 , A41 > {}; 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 , typename A40 , typename A41 , typename A42 > 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 , A39 , A40 , A41 , A42 > : 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 , A39 , A40 , A41 , A42 > {}; 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 , typ
ename 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 A40 , typename A41 , typename A42 , typename A43 > 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 , A39 , A40 , A41 , A42 , A43 > : 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 , A39 , A40 , A41 , A42 , A43 > {}; 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 > 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 , A39 , A40 , A41 , A42 , A43 , A44 > : 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 , A39 , A40 , A41 , A42 , A43 , A44 > {}; 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 > 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 ,
 A39 , A40 , A41 , A42 , A43 , A44 , A45 > : 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 , A39 , A40 , A41 , A42 , A43 , A44 , A45 > {}; 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typena
me A45 , typename A46 > 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 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46 > : 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 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46 > {}; 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 > 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 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 > : 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 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , ty
pename A6 , typename A7 , typename A8 , typename A9 , 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 > 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 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A1
0 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 > {}; } 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 expression { template <typename Lhs, typename Rhs> struct mem_ptr : expr<proto::tag::mem_ptr, Lhs, Rhs> {}; } namespace rule { struct mem_ptr : expression::mem_ptr<meta_grammar, meta_grammar> {}; } template <typename Dummy> struct meta_grammar::case_<proto::tag::mem_ptr, Dummy> : enable_rule<rule::mem_ptr, Dummy> {};
     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 A40 = void , typename A41 = void , typename A42 = void , typename A43 = void , typename A44 = void , typename A45 = void , typename
 A46 = void , typename A47 = void , typename A48 = void , typename A49 = 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,10 +774,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 41>
+ 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 A40>
+ 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 , A40>
         {
- 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< typename proto::result_of::child_c<Expr, 40>::type , Context , int >::result_type child4
0;
+ 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 evaluator::impl< A40 , Context , int >::result_type child40;
             typedef
                 typename boost::result_of<
                     child1(
@@ -793,10 +793,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 42>
+ 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 A40 , typename A41>
+ 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 , A40 , A41>
         {
- 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< typename proto::result_of::child_c<Expr, 40>::type , Context , int >::result_type child4
0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Context , int >::result_type child41;
+ 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 evaluator::impl< A40 , Context , int >::result_type child40; typedef typename evaluator::impl< A41 , Context , int >::result_type child41;
             typedef
                 typename boost::result_of<
                     child1(
@@ -812,10 +812,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 43>
+ 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 A40 , typename A41 , typename A42>
+ 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 , A40 , A41 , A42>
         {
- 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< typename proto::result_of::child_c<Expr, 40>::type , Context , int >::result_type child4
0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Context , int >::result_type child41; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 42>::type , Context , int >::result_type child42;
+ 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 evaluator::impl< A40 , Context , int >::result_type child40; typedef typename evaluator::impl< A41 , Context , int >::result_type child41; typedef typename evaluator::impl< A42 , Context , int >::result_type child42;
             typedef
                 typename boost::result_of<
                     child1(
@@ -831,10 +831,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 44>
+ 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 A40 , typename A41 , typename A42 , typename A43>
+ 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 , A40 , A41 , A42 , A43>
         {
- 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< typename proto::result_of::child_c<Expr, 40>::type , Context , int >::result_type child4
0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Context , int >::result_type child41; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 42>::type , Context , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Context , int >::result_type child43;
+ 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 evaluator::impl< A40 , Context , int >::result_type child40; typedef typename evaluator::impl< A41 , Context , int >::result_type child41; typedef typename evaluator::impl< A42 , Context , int >::result_type child42; typedef typename evaluator::impl< A43 , Context , int >::result_type child43;
             typedef
                 typename boost::result_of<
                     child1(
@@ -850,10 +850,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 45>
+ 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 A40 , typename A41 , typename A42 , typename A43 , typename A44>
+ 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 , A40 , A41 , A42 , A43 , A44>
         {
- 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< typename proto::result_of::child_c<Expr, 40>::type , Context , int >::result_type child4
0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Context , int >::result_type child41; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 42>::type , Context , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Context , int >::result_type child43; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 44>::type , Context , int >::result_type child44;
+ 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 evaluator::impl< A40 , Context , int >::result_type child40; typedef typename evaluator::impl< A41 , Context , int >::result_type child41; typedef typename evaluator::impl< A42 , Context , int >::result_type child42; typedef typename evaluator::impl< A43 , Context , int >::result_type child43; typedef typename evaluator::impl< A44 , Context , int >::result_type child44;
             typedef
                 typename boost::result_of<
                     child1(
@@ -869,10 +869,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 46>
+ 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45>
         {
- 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< typename proto::result_of::child_c<Expr, 40>::type , Context , int >::result_type child4
0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Context , int >::result_type child41; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 42>::type , Context , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Context , int >::result_type child43; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 44>::type , Context , int >::result_type child44; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 45>::type , Context , int >::result_type child45;
+ 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 evaluator::impl< A40 , Context , int >::result_type child40; typedef typename evaluator::impl< A41 , Context , int >::result_type child41; typedef typename evaluator::impl< A42 , Context , int >::result_type child42; typedef typename evaluator::impl< A43 , Context , int >::result_type child43; typedef typename evaluator::impl< A44 , Context , int >::result_type child44; typedef typename evaluator::impl< A45 , Context , int >::result_type child45;
             typedef
                 typename boost::result_of<
                     child1(
@@ -888,10 +888,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 47>
+ 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46>
         {
- 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< typename proto::result_of::child_c<Expr, 40>::type , Context , int >::result_type child4
0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Context , int >::result_type child41; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 42>::type , Context , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Context , int >::result_type child43; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 44>::type , Context , int >::result_type child44; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 45>::type , Context , int >::result_type child45; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 46>::type , Context , int >::result_type child46;
+ 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 evaluator::impl< A40 , Context , int >::result_type child40; typedef typename evaluator::impl< A41 , Context , int >::result_type child41; typedef typename evaluator::impl< A42 , Context , int >::result_type child42; typedef typename evaluator::impl< A43 , Context , int >::result_type child43; typedef typename evaluator::impl< A44 , Context , int >::result_type child44; typedef typename evaluator::impl< A45 , Context , int >::result_type child45; typedef typename evaluator::impl< A46 , Context , int >::result_type child46;
             typedef
                 typename boost::result_of<
                     child1(
@@ -907,10 +907,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 48>
+ 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47>
         {
- 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< typename proto::result_of::child_c<Expr, 40>::type , Context , int >::result_type child4
0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Context , int >::result_type child41; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 42>::type , Context , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Context , int >::result_type child43; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 44>::type , Context , int >::result_type child44; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 45>::type , Context , int >::result_type child45; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 46>::type , Context , int >::result_type child46; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 47>::type , Context , int >::result_type child47;
+ 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 evaluator::impl< A40 , Context , int >::result_type child40; typedef typename evaluator::impl< A41 , Context , int >::result_type child41; typedef typename evaluator::impl< A42 , Context , int >::result_type child42; typedef typename evaluator::impl< A43 , Context , int >::result_type child43; typedef typename evaluator::impl< A44 , Context , int >::result_type child44; typedef typename evaluator::impl< A45 , Context , int >::result_type child45; typedef typename evaluator::impl< A46 , Context , int >::result_type child46; typedef typename evaluator::impl< A47 , Context , int >::result_type child47;
             typedef
                 typename boost::result_of<
                     child1(
@@ -926,10 +926,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 49>
+ 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48>
         {
- 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< typename proto::result_of::child_c<Expr, 40>::type , Context , int >::result_type child4
0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Context , int >::result_type child41; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 42>::type , Context , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Context , int >::result_type child43; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 44>::type , Context , int >::result_type child44; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 45>::type , Context , int >::result_type child45; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 46>::type , Context , int >::result_type child46; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 47>::type , Context , int >::result_type child47; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 48>::type , Context , int >::result_type child48;
+ 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 evaluator::impl< A40 , Context , int >::result_type child40; typedef typename evaluator::impl< A41 , Context , int >::result_type child41; typedef typename evaluator::impl< A42 , Context , int >::result_type child42; typedef typename evaluator::impl< A43 , Context , int >::result_type child43; typedef typename evaluator::impl< A44 , Context , int >::result_type child44; typedef typename evaluator::impl< A45 , Context , int >::result_type child45; typedef typename evaluator::impl< A46 , Context , int >::result_type child46; typedef typename evaluator::impl< A47 , Context , int >::result_type child47; typedef typename evaluator::impl< A48 , Context , int >::result_type child48;
             typedef
                 typename boost::result_of<
                     child1(
@@ -945,10 +945,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 50>
+ 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 , A49>
         {
- 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< typename proto::result_of::child_c<Expr, 40>::type , Context , int >::result_type child4
0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 41>::type , Context , int >::result_type child41; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 42>::type , Context , int >::result_type child42; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 43>::type , Context , int >::result_type child43; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 44>::type , Context , int >::result_type child44; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 45>::type , Context , int >::result_type child45; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 46>::type , Context , int >::result_type child46; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 47>::type , Context , int >::result_type child47; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 48>::type , Context , int >::result_type child48; typedef typename eva
luator::impl< typename proto::result_of::child_c<Expr, 49>::type , Context , int >::result_type child49;
+ 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 evaluator::impl< A40 , Context , int >::result_type child40; typedef typename evaluator::impl< A41 , Context , int >::result_type child41; typedef typename evaluator::impl< A42 , Context , int >::result_type child42; typedef typename evaluator::impl< A43 , Context , int >::result_type child43; typedef typename evaluator::impl< A44 , Context , int >::result_type child44; typedef typename evaluator::impl< A45 , Context , int >::result_type child45; typedef typename evaluator::impl< A46 , Context , int >::result_type child46; typedef typename evaluator::impl< A47 , Context , int >::result_type child47; typedef typename evaluator::impl< A48 , Context , int >::result_type child48; typedef typename evaluator::impl< A49 , Context , int >::result_type child49;
             typedef
                 typename boost::result_of<
                     child1(
@@ -959,31 +959,9 @@
         };
     }
     struct mem_fun_ptr_eval
- : proto::callable
     {
         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:
     
     
     
@@ -991,19 +969,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)
                 )(
                     
                 );
@@ -1016,21 +999,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)
                 );
         }
         
@@ -1041,21 +1029,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)
                 );
         }
         
@@ -1066,21 +1059,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)
                 );
         }
         
@@ -1091,21 +1089,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)
                 );
         }
         
@@ -1116,21 +1119,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)
                 );
         }
         
@@ -1141,21 +1149,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)
                 );
         }
         
@@ -1166,21 +1179,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)
                 );
         }
         
@@ -1191,21 +1209,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)
                 );
         }
         
@@ -1216,21 +1239,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)
                 );
         }
         
@@ -1241,21 +1269,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)
                 );
         }
         
@@ -1266,21 +1299,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)
                 );
         }
         
@@ -1291,21 +1329,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)
                 );
         }
         
@@ -1316,21 +1359,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)
                 );
         }
         
@@ -1341,21 +1389,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)
                 );
         }
         
@@ -1366,21 +1419,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)
                 );
         }
         
@@ -1391,21 +1449,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)
                 );
         }
         
@@ -1416,21 +1479,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)
                 );
         }
         
@@ -1441,21 +1509,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)
                 );
         }
         
@@ -1466,21 +1539,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)
                 );
         }
         
@@ -1491,21 +1569,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)
                 );
         }
         
@@ -1516,21 +1599,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)
                 );
         }
         
@@ -1541,21 +1629,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)
                 );
         }
         
@@ -1566,21 +1659,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)
                 );
         }
         
@@ -1591,21 +1689,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)
                 );
         }
         
@@ -1616,21 +1719,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)
                 );
         }
         
@@ -1641,21 +1749,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)
                 );
         }
         
@@ -1666,21 +1779,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)
                 );
         }
         
@@ -1691,21 +1809,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)
                 );
         }
         
@@ -1716,21 +1839,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)
                 );
         }
         
@@ -1741,21 +1869,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)
                 );
         }
         
@@ -1766,21 +1899,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)
                 );
         }
         
@@ -1791,21 +1929,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)
                 );
         }
         
@@ -1816,21 +1959,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)
                 );
         }
         
@@ -1841,21 +1989,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)
                 );
         }
         
@@ -1866,21 +2019,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)
                 );
         }
         
@@ -1891,21 +2049,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)
                 );
         }
         
@@ -1916,21 +2079,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)
                 );
         }
         
@@ -1941,21 +2109,26 @@
     
     
     
-
- 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)
                 );
         }
         
@@ -1966,21 +2139,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<41>
+ 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 , typename A40>
+ 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 , A40)>
+ : 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& , A40 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 , typename A40>
+ 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 & , A40 &)>
+ : 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 , A40>
+ {};
+ 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 A40>
+ 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 , A40>::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 , A40 const& a40
         ) 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(proto::child_c< 40 >(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) , eval(a40, ctx)
                 );
         }
         
@@ -1991,21 +2169,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<42>
+ 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 , typename A40 , typename A41>
+ 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 , A40 , A41)>
+ : 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& , A40 const& , A41 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 , typename A40 , typename A41>
+ 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 & , A40 & , A41 &)>
+ : 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 , A40 , A41>
+ {};
+ 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 A40 , typename A41>
+ 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 , A40 , A41>::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 , A40 const& a40 , A41 const& a41
         ) 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(proto::child_c< 40 >(expr), ctx) , eval(proto::child_c< 41 >(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) , eval(a40, ctx) , eval(a41, ctx)
                 );
         }
         
@@ -2016,21 +2199,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<43>
+ 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 , typename A40 , typename A41 , typename A42>
+ 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 , A40 , A41 , A42)>
+ : 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& , A40 const& , A41 const& , A42 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 , typename A40 , typename A41 , typename A42>
+ 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 & , A40 & , A41 & , A42 &)>
+ : 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 , A40 , A41 , A42>
+ {};
+ 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 A40 , typename A41 , typename A42>
+ 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 , A40 , A41 , A42>::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 , A40 const& a40 , A41 const& a41 , A42 const& a42
         ) 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(proto::child_c< 40 >(expr), ctx) , eval(proto::child_c< 41 >(expr), ctx) , eval(proto::child_c< 42 >(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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx)
                 );
         }
         
@@ -2041,21 +2229,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<44>
+ 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 , typename A40 , typename A41 , typename A42 , typename A43>
+ 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 , A40 , A41 , A42 , A43)>
+ : 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& , A40 const& , A41 const& , A42 const& , A43 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 , typename A40 , typename A41 , typename A42 , typename A43>
+ 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 & , A40 & , A41 & , A42 & , A43 &)>
+ : 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 , A40 , A41 , A42 , A43>
+ {};
+ 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 A40 , typename A41 , typename A42 , typename A43>
+ 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 , A40 , A41 , A42 , A43>::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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43
         ) 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(proto::child_c< 40 >(expr), ctx) , eval(proto::child_c< 41 >(expr), ctx) , eval(proto::child_c< 42 >(expr), ctx) , eval(proto::child_c< 43 >(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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx)
                 );
         }
         
@@ -2066,21 +2259,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<45>
+ 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44>
+ 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 , A40 , A41 , A42 , A43 , A44)>
+ : 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44>
+ 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 & , A40 & , A41 & , A42 & , A43 & , A44 &)>
+ : 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 , A40 , A41 , A42 , A43 , A44>
+ {};
+ 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 A40 , typename A41 , typename A42 , typename A43 , typename A44>
+ 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 , A40 , A41 , A42 , A43 , A44>::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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44
         ) 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(proto::child_c< 40 >(expr), ctx) , eval(proto::child_c< 41 >(expr), ctx) , eval(proto::child_c< 42 >(expr), ctx) , eval(proto::child_c< 43 >(expr), ctx) , eval(proto::child_c< 44 >(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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx)
                 );
         }
         
@@ -2091,21 +2289,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<46>
+ 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45)>
+ : 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
+ 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 & , A40 & , A41 & , A42 & , A43 & , A44 & , A45 &)>
+ : 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 , A40 , A41 , A42 , A43 , A44 , A45>
+ {};
+ 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45>::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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45
         ) 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(proto::child_c< 40 >(expr), ctx) , eval(proto::child_c< 41 >(expr), ctx) , eval(proto::child_c< 42 >(expr), ctx) , eval(proto::child_c< 43 >(expr), ctx) , eval(proto::child_c< 44 >(expr), ctx) , eval(proto::child_c< 45 >(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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx)
                 );
         }
         
@@ -2116,21 +2319,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<47>
+ 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46)>
+ : 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
+ 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 & , A40 & , A41 & , A42 & , A43 & , A44 & , A45 & , A46 &)>
+ : 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46>
+ {};
+ 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46>::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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46
         ) 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(proto::child_c< 40 >(expr), ctx) , eval(proto::child_c< 41 >(expr), ctx) , eval(proto::child_c< 42 >(expr), ctx) , eval(proto::child_c< 43 >(expr), ctx) , eval(proto::child_c< 44 >(expr), ctx) , eval(proto::child_c< 45 >(expr), ctx) , eval(proto::child_c< 46 >(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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx)
                 );
         }
         
@@ -2141,21 +2349,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<48>
+ 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47)>
+ : 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
+ 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 & , A40 & , A41 & , A42 & , A43 & , A44 & , A45 & , A46 & , A47 &)>
+ : 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47>
+ {};
+ 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47>::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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47
         ) 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(proto::child_c< 40 >(expr), ctx) , eval(proto::child_c< 41 >(expr), ctx) , eval(proto::child_c< 42 >(expr), ctx) , eval(proto::child_c< 43 >(expr), ctx) , eval(proto::child_c< 44 >(expr), ctx) , eval(proto::child_c< 45 >(expr), ctx) , eval(proto::child_c< 46 >(expr), ctx) , eval(proto::child_c< 47 >(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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx)
                 );
         }
         
@@ -2166,21 +2379,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<49>
+ 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48)>
+ : 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 const& , A48 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
+ 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 & , A40 & , A41 & , A42 & , A43 & , A44 & , A45 & , A46 & , A47 & , A48 &)>
+ : 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48>
+ {};
+ 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48>::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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48
         ) 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(proto::child_c< 40 >(expr), ctx) , eval(proto::child_c< 41 >(expr), ctx) , eval(proto::child_c< 42 >(expr), ctx) , eval(proto::child_c< 43 >(expr), ctx) , eval(proto::child_c< 44 >(expr), ctx) , eval(proto::child_c< 45 >(expr), ctx) , eval(proto::child_c< 46 >(expr), ctx) , eval(proto::child_c< 47 >(expr), ctx) , eval(proto::child_c< 48 >(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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx) , eval(a48, ctx)
                 );
         }
         
@@ -2191,27 +2409,32 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<50>
+ 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 , A49)>
+ : 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& , A40 const& , A41 const& , A42 const& , A43 const& , A44 const& , A45 const& , A46 const& , A47 const& , A48 const& , A49 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
+ 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 & , A40 & , A41 & , A42 & , A43 & , A44 & , A45 & , A46 & , A47 & , A48 & , A49 &)>
+ : 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 , A49>
+ {};
+ 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 A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 , A49>::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 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48 , A49 const& a49
         ) 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(proto::child_c< 40 >(expr), ctx) , eval(proto::child_c< 41 >(expr), ctx) , eval(proto::child_c< 42 >(expr), ctx) , eval(proto::child_c< 43 >(expr), ctx) , eval(proto::child_c< 44 >(expr), ctx) , eval(proto::child_c< 45 >(expr), ctx) , eval(proto::child_c< 46 >(expr), ctx) , eval(proto::child_c< 47 >(expr), ctx) , eval(proto::child_c< 48 >(expr), ctx) , eval(proto::child_c< 49 >(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) , eval(a40, ctx) , eval(a41, ctx) , eval(a42, ctx) , eval(a43, ctx) , eval(a44, ctx) , eval(a45, ctx) , eval(a46, ctx) , eval(a47, ctx) , eval(a48, ctx) , eval(a49, 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/self.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/self.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/self.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,19 +5,19 @@
     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_OPERATOR_SELF_HPP
-#define PHOENIX_OPERATOR_SELF_HPP
+#ifndef BOOST_PHOENIX_OPERATOR_SELF_HPP
+#define BOOST_PHOENIX_OPERATOR_SELF_HPP
 
 #include <boost/phoenix/operator/detail/define_operator.hpp>
 #include <boost/phoenix/core/expression.hpp>
 
 namespace boost { namespace phoenix
 {
- PHOENIX_UNARY_OPERATORS(
+ BOOST_PHOENIX_UNARY_OPERATORS(
                 (address_of)
                 (dereference)
         )
- PHOENIX_BINARY_OPERATORS(
+ BOOST_PHOENIX_BINARY_OPERATORS(
                 (assign)
                 (subscript)
         )

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/phoenix.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/phoenix.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/phoenix.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_PHOENIX_HPP
-#define PHOENIX_PHOENIX_HPP
+#ifndef BOOST_PHOENIX_PHOENIX_HPP
+#define BOOST_PHOENIX_PHOENIX_HPP
 
 #include <boost/phoenix/core.hpp>
 #include <boost/phoenix/function.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_SCOPE_HPP
-#define PHOENIX_SCOPE_HPP
+#ifndef BOOST_PHOENIX_SCOPE_HPP
+#define BOOST_PHOENIX_SCOPE_HPP
 
 #include <boost/phoenix/version.hpp>
 #include <boost/phoenix/scope/scoped_environment.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/dynamic.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/dynamic.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/dynamic.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,25 +1,24 @@
 
-/*
-#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_SCOPE_DETAIL_DYNAMIC_HPP
-#define PHOENIX_SCOPE_DETAIL_DYNAMIC_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_SCOPE_DETAIL_DYNAMIC_HPP
+#define BOOST_PHOENIX_SCOPE_DETAIL_DYNAMIC_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
 #include <boost/phoenix/scope/detail/preprocessed/dynamic.hpp>
 
 #endif
-#else*/
+#else
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_SCOPE_DETAIL_DYNAMIC_HPP
-#define PHOENIX_SCOPE_DETAIL_DYNAMIC_HPP
+#ifndef BOOST_PHOENIX_SCOPE_DETAIL_DYNAMIC_HPP
+#define BOOST_PHOENIX_SCOPE_DETAIL_DYNAMIC_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/dynamic_" PHOENIX_LIMIT_STR ".hpp")
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/dynamic_" BOOST_PHOENIX_LIMIT_STR ".hpp")
 #endif
 
 /*==============================================================================
@@ -30,11 +29,11 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(preserve: 1)
 #endif
 
-#define PHOENIX_SCOPE_DYNAMIC_MEMBER(_, N, __) \
+#define BOOST_PHOENIX_SCOPE_DYNAMIC_MEMBER(_, N, __) \
         typedef \
             typename expression::dynamic_member< \
                 mpl::int_<N> \
@@ -43,29 +42,29 @@
             BOOST_PP_CAT(member, BOOST_PP_INC(N)); \
 /**/
 
-#define PHOENIX_ITERATION_PARAMS \
- (3, (1, PHOENIX_DYNAMIC_LIMIT, \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (1, BOOST_PHOENIX_DYNAMIC_LIMIT, \
     <boost/phoenix/scope/detail/dynamic.hpp>))
-#include PHOENIX_ITERATE()
+#include BOOST_PHOENIX_ITERATE()
 
-#undef PHOENIX_SCOPE_DYNAMIC_MEMBER
+#undef BOOST_PHOENIX_SCOPE_DYNAMIC_MEMBER
 
 #endif
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
 #else
 
- template <PHOENIX_typename_A>
- struct dynamic<PHOENIX_A> : noncopyable
+ template <BOOST_PHOENIX_typename_A>
+ struct dynamic<BOOST_PHOENIX_A> : noncopyable
     {
         typedef
- BOOST_PP_CAT(vector, PHOENIX_ITERATION)<PHOENIX_A>
+ BOOST_PP_CAT(vector, BOOST_PHOENIX_ITERATION)<BOOST_PHOENIX_A>
             tuple_type;
         typedef
- dynamic<PHOENIX_A>
+ dynamic<BOOST_PHOENIX_A>
             self_type;
         typedef
             dynamic_frame<self_type>
@@ -85,11 +84,15 @@
                         make(mpl::int_<N>(), scope);
         }
 
- BOOST_PP_REPEAT(PHOENIX_ITERATION, PHOENIX_SCOPE_DYNAMIC_MEMBER, _)
+ BOOST_PP_REPEAT(
+ BOOST_PHOENIX_ITERATION
+ , BOOST_PHOENIX_SCOPE_DYNAMIC_MEMBER
+ , _
+ )
 
         mutable dynamic_frame_type* frame;
     };
 
 #endif
 
-//#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/let_local_gen.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/let_local_gen.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/let_local_gen.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,24 +1,24 @@
 
-/*#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_SCOPE_DETAIL_LET_LOCAL_GEN_HPP
-#define PHOENIX_SCOPE_DETAIL_LET_LOCAL_GEN_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_SCOPE_DETAIL_LET_LOCAL_GEN_HPP
+#define BOOST_PHOENIX_SCOPE_DETAIL_LET_LOCAL_GEN_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
 #include <boost/phoenix/scope/detail/preprocessed/let_local_gen.hpp>
 
 #endif
-#else*/
+#else
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_SCOPE_DETAIL_LET_LOCAL_GEN_HPP
-#define PHOENIX_SCOPE_DETAIL_LET_LOCAL_GEN_HPP
+#ifndef BOOST_PHOENIX_SCOPE_DETAIL_LET_LOCAL_GEN_HPP
+#define BOOST_PHOENIX_SCOPE_DETAIL_LET_LOCAL_GEN_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/let_local_gen_" PHOENIX_LIMIT_STR ".hpp")
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/let_local_gen_" BOOST_PHOENIX_LIMIT_STR ".hpp")
 #endif
 
 /*==============================================================================
@@ -29,16 +29,16 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(preserve: 1)
 #endif
 
-#define PHOENIX_ITERATION_PARAMS \
- (3, (1, PHOENIX_LOCAL_LIMIT, \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (1, BOOST_PHOENIX_LOCAL_LIMIT, \
     <boost/phoenix/scope/detail/let_local_gen.hpp>))
-#include PHOENIX_ITERATE()
+#include BOOST_PHOENIX_ITERATE()
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
@@ -46,15 +46,15 @@
 
 #else
 
- template <PHOENIX_typename_A>
+ template <BOOST_PHOENIX_typename_A>
         let_actor_gen<
- typename detail::make_locals<PHOENIX_A>::type
+ typename detail::make_locals<BOOST_PHOENIX_A>::type
> const
- operator()(PHOENIX_A_const_ref_a) const
+ operator()(BOOST_PHOENIX_A_const_ref_a) const
         {
- return detail::make_locals<PHOENIX_A>::make(PHOENIX_a);
+ return detail::make_locals<BOOST_PHOENIX_A>::make(BOOST_PHOENIX_a);
         }
 
 #endif
 
-//#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/local_gen.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/local_gen.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/local_gen.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,7 +1,7 @@
 
-#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_SCOPE_DETAIL_LOCAL_GEN_HPP
-#define PHOENIX_SCOPE_DETAIL_LOCAL_GEN_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_SCOPE_DETAIL_LOCAL_GEN_HPP
+#define BOOST_PHOENIX_SCOPE_DETAIL_LOCAL_GEN_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
@@ -10,15 +10,15 @@
 #endif
 #else
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_SCOPE_DETAIL_LOCAL_GEN_HPP
-#define PHOENIX_SCOPE_DETAIL_LOCAL_GEN_HPP
+#ifndef BOOST_PHOENIX_SCOPE_DETAIL_LOCAL_GEN_HPP
+#define BOOST_PHOENIX_SCOPE_DETAIL_LOCAL_GEN_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/local_gen_" PHOENIX_LIMIT_STR ".hpp")
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/local_gen_" BOOST_PHOENIX_LIMIT_STR ".hpp")
 #endif
 
 /*==============================================================================
@@ -29,11 +29,11 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(preserve: 1)
 #endif
 
-#define PHOENIX_LOCAL_GEN_KEY_TYPES(_, N, __) \
+#define BOOST_PHOENIX_LOCAL_GEN_KEY_TYPES(_, N, __) \
     BOOST_PP_COMMA_IF(N) \
     typename proto::result_of::value< \
         typename proto::result_of::child_c< \
@@ -43,24 +43,24 @@
>::type::type::key_type \
 /**/
 
-#define PHOENIX_LOCAL_GEN_ACTOR(_, N, __) \
+#define BOOST_PHOENIX_LOCAL_GEN_ACTOR(_, N, __) \
     BOOST_PP_COMMA_IF(N) proto::child_c<1>(a ## N) \
 /**/
 
-#define PHOENIX_LOCAL_GEN_ACTOR_TYPES(_, n, __) \
+#define BOOST_PHOENIX_LOCAL_GEN_ACTOR_TYPES(_, n, __) \
     BOOST_PP_COMMA_IF(n) typename proto::result_of::child_c<A ## n, 1>::type \
 /**/
 
-#define PHOENIX_ITERATION_PARAMS \
- (3, (3, PHOENIX_LOCAL_LIMIT, \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (3, BOOST_PHOENIX_LOCAL_LIMIT, \
     <boost/phoenix/scope/detail/local_gen.hpp>))
-#include PHOENIX_ITERATE()
+#include BOOST_PHOENIX_ITERATE()
 
-#undef PHOENIX_LOCAL_GEN_KEY_TYPES
-#undef PHOENIX_LOCAL_GEN_ACTOR
-#undef PHOENIX_LOCAL_GEN_ACTOR_TYPES
+#undef BOOST_PHOENIX_LOCAL_GEN_KEY_TYPES
+#undef BOOST_PHOENIX_LOCAL_GEN_ACTOR
+#undef BOOST_PHOENIX_LOCAL_GEN_ACTOR_TYPES
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
@@ -68,18 +68,40 @@
 
 #else
 
- template <PHOENIX_typename_A>
- PHOENIX_LOCAL_GEN_NAME<
- BOOST_PP_CAT(vector, PHOENIX_ITERATION)<PHOENIX_LOCAL_GEN_ACTOR_TYPES>
- , detail::map_local_index_to_tuple<BOOST_PP_REPEAT(PHOENIX_ITERATION, PHOENIX_LOCAL_GEN_KEY_TYPES, _)>
+ template <BOOST_PHOENIX_typename_A>
+ BOOST_PHOENIX_LOCAL_GEN_NAME<
+ BOOST_PP_CAT(
+ vector
+ , BOOST_PHOENIX_ITERATION)<BOOST_PHOENIX_LOCAL_GEN_ACTOR_TYPES>
+ , detail::map_local_index_to_tuple<
+ BOOST_PP_REPEAT(
+ BOOST_PHOENIX_ITERATION
+ , BOOST_PHOENIX_LOCAL_GEN_KEY_TYPES
+ , _
+ )
+ >
> const
- operator()(PHOENIX_A_const_ref_a) const
+ operator()(BOOST_PHOENIX_A_const_ref_a) const
         {
             return
                 BOOST_PP_CAT(
- vector, PHOENIX_ITERATION)<BOOST_PP_REPEAT(PHOENIX_ITERATION, PHOENIX_LOCAL_GEN_ACTOR_TYPES_I, _)>(BOOST_PP_REPEAT(PHOENIX_ITERATION, PHOENIX_LOCAL_GEN_ACTOR, _));
+ vector
+ , BOOST_PHOENIX_ITERATION
+ )<
+ BOOST_PP_REPEAT(
+ BOOST_PHOENIX_ITERATION
+ , BOOST_PHOENIX_LOCAL_GEN_ACTOR_TYPES_I
+ , _
+ )
+ >(
+ BOOST_PP_REPEAT(
+ BOOST_PHOENIX_ITERATION
+ , BOOST_PHOENIX_LOCAL_GEN_ACTOR
+ , _
+ )
+ );
         }
 
 #endif
 
-#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/local_var_def.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/local_var_def.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/local_var_def.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,5 +1,5 @@
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
 /*==============================================================================
     Copyright (c) 2005-2010 Joel de Guzman
@@ -8,8 +8,8 @@
     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_SCOPE_LOCAL_VAR_DEF_HPP
-#define PHOENIX_SCOPE_LOCAL_VAR_DEF_HPP
+#ifndef BOOST_PHOENIX_SCOPE_LOCAL_VAR_DEF_HPP
+#define BOOST_PHOENIX_SCOPE_LOCAL_VAR_DEF_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
@@ -57,20 +57,20 @@
             : evaluator::impl<A0 const &, Context, int>::result_type
         {};
 
-#define PHOENIX_ITERATION_PARAMS \
- (4, (2, PHOENIX_LOCAL_LIMIT, \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (4, (2, BOOST_PHOENIX_LOCAL_LIMIT, \
     <boost/phoenix/scope/detail/local_var_def.hpp>, 1))
-#include PHOENIX_ITERATE()
+#include BOOST_PHOENIX_ITERATE()
 
 
         struct local_var_def_eval
         {
             template <typename Sig>
             struct result;
-#define PHOENIX_ITERATION_PARAMS \
- (4, (1, PHOENIX_LOCAL_LIMIT, \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (4, (1, BOOST_PHOENIX_LOCAL_LIMIT, \
     <boost/phoenix/scope/detail/local_var_def.hpp>, 2))
-#include PHOENIX_ITERATE()
+#include BOOST_PHOENIX_ITERATE()
 
         };
 
@@ -85,25 +85,32 @@
 
 #if BOOST_PP_ITERATION_FLAGS() == 1
         template <
- BOOST_PP_ENUM_PARAMS(PHOENIX_ITERATION, typename Tag)
- , PHOENIX_typename_A
+ BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, typename Tag)
+ , BOOST_PHOENIX_typename_A
           , typename Context
>
         struct local_var_def_is_nullary<
             fusion::map<
- BOOST_PP_ENUM(PHOENIX_ITERATION, M0, _)
+ BOOST_PP_ENUM(BOOST_PHOENIX_ITERATION, M0, _)
>
           , Context
>
             : mpl::and_<
                 typename evaluator::impl<
- BOOST_PP_CAT(A, BOOST_PP_DEC(PHOENIX_ITERATION)) const &
+ BOOST_PP_CAT(
+ A
+ , BOOST_PP_DEC(BOOST_PHOENIX_ITERATION)
+ ) const &
                   , Context
                   , int
>::result_type
               , local_var_def_is_nullary<
                     fusion::map<
- BOOST_PP_ENUM(BOOST_PP_DEC(PHOENIX_ITERATION), M0, _)
+ BOOST_PP_ENUM(
+ BOOST_PP_DEC(BOOST_PHOENIX_ITERATION)
+ , M0
+ , _
+ )
>
                   , Context
>
@@ -115,14 +122,14 @@
 #if BOOST_PP_ITERATION_FLAGS() == 2
             template <
                 typename This
- , BOOST_PP_ENUM_PARAMS(PHOENIX_ITERATION, typename Tag)
- , PHOENIX_typename_A
+ , BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, typename Tag)
+ , BOOST_PHOENIX_typename_A
               , typename Context
>
             struct result<
                 This(
                     fusion::map<
- BOOST_PP_ENUM(PHOENIX_ITERATION, M0, _)
+ BOOST_PP_ENUM(BOOST_PHOENIX_ITERATION, M0, _)
> const &
                   , Context
                 )
@@ -130,40 +137,42 @@
             {
                 typedef
                     fusion::map<
- BOOST_PP_ENUM(PHOENIX_ITERATION, M1, _)
+ BOOST_PP_ENUM(BOOST_PHOENIX_ITERATION, M1, _)
>
                     type;
             };
             
             template <
- BOOST_PP_ENUM_PARAMS(PHOENIX_ITERATION, typename Tag)
- , PHOENIX_typename_A
+ BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, typename Tag)
+ , BOOST_PHOENIX_typename_A
               , typename Context
>
             typename result<
                 local_var_def_eval(
- fusion::map<BOOST_PP_ENUM(PHOENIX_ITERATION, M0, _) > const &
+ fusion::map<
+ BOOST_PP_ENUM(BOOST_PHOENIX_ITERATION, M0, _)
+ > const &
                   , Context const &)
>::type const
             operator()(
                 fusion::map<
- BOOST_PP_ENUM(PHOENIX_ITERATION, M0, _)
+ BOOST_PP_ENUM(BOOST_PHOENIX_ITERATION, M0, _)
> const & locals
               , Context const & ctx
             ) const
             {
- BOOST_PP_REPEAT(PHOENIX_ITERATION, M2, _)
+ BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, M2, _)
 
                 return
                     typename result<
                         local_var_def_eval(
                             fusion::map<
- BOOST_PP_ENUM(PHOENIX_ITERATION, M0, _)
+ BOOST_PP_ENUM(BOOST_PHOENIX_ITERATION, M0, _)
> const&
                           , Context const&
                         )
>::type(
- BOOST_PP_ENUM(PHOENIX_ITERATION, M3, _)
+ BOOST_PP_ENUM(BOOST_PHOENIX_ITERATION, M3, _)
                     );
             }
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/make_locals.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/make_locals.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/make_locals.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,8 +1,7 @@
 
-/*
-#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_SCOPE_DETAIL_MAKE_LOCALS_HPP
-#define PHOENIX_SCOPE_DETAIL_MAKE_LOCALS_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_SCOPE_DETAIL_MAKE_LOCALS_HPP
+#define BOOST_PHOENIX_SCOPE_DETAIL_MAKE_LOCALS_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
@@ -10,17 +9,16 @@
 
 #endif
 #else
-*/
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_SCOPE_DETAIL_MAKE_LOCALS_HPP
-#define PHOENIX_SCOPE_DETAIL_MAKE_LOCALS_HPP
+#ifndef BOOST_PHOENIX_SCOPE_DETAIL_MAKE_LOCALS_HPP
+#define BOOST_PHOENIX_SCOPE_DETAIL_MAKE_LOCALS_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/make_locals_" PHOENIX_LIMIT_STR ".hpp")
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/make_locals_" BOOST_PHOENIX_LIMIT_STR ".hpp")
 #endif
 
 /*==============================================================================
@@ -31,40 +29,44 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(preserve: 1)
 #endif
 
-#define PHOENIX_TYPEDEF_LOCAL_TYPES(Z, N, D) \
- typedef \
- typename proto::result_of::value< \
- typename proto::result_of::child_c< \
- BOOST_PP_CAT(A, N) \
- , 0 \
- >::type \
- >::type \
- BOOST_PP_CAT(tag_type, N); \
-\
- typedef \
- typename proto::result_of::child_c< \
- BOOST_PP_CAT(A, N) \
- , 1 \
- >::type \
- BOOST_PP_CAT(var_type, N);\
-
-#define PHOENIX_TYPEDEF_LOCAL_PAIR_TYPES(Z, N, D) \
- BOOST_PP_COMMA_IF(N) fusion::pair<BOOST_PP_CAT(tag_type, N), BOOST_PP_CAT(var_type, N)>
+#define BOOST_PHOENIX_TYPEDEF_LOCAL_TYPES(Z, N, D) \
+ typedef \
+ typename proto::result_of::value< \
+ typename proto::result_of::child_c< \
+ BOOST_PP_CAT(A, N) \
+ , 0 \
+ >::type \
+ >::type \
+ BOOST_PP_CAT(tag_type, N); \
+ \
+ typedef \
+ typename proto::result_of::child_c< \
+ BOOST_PP_CAT(A, N) \
+ , 1 \
+ >::type \
+ BOOST_PP_CAT(var_type, N); \
+/**/
+
+#define BOOST_PHOENIX_TYPEDEF_LOCAL_PAIR_TYPES(Z, N, D) \
+ BOOST_PP_COMMA_IF(N) \
+ fusion::pair<BOOST_PP_CAT(tag_type, N), BOOST_PP_CAT(var_type, N)> \
+/**/
+
+#define BOOST_PHOENIX_CHILD_OF(Z, N, D) \
+ BOOST_PP_COMMA_IF(N) proto::child_c<1>(BOOST_PP_CAT(a, N)) \
+/**/
 
-#define PHOENIX_CHILD_OF(Z, N, D) \
- BOOST_PP_COMMA_IF(N) proto::child_c<1>(BOOST_PP_CAT(a, N))
 
-
-#define PHOENIX_ITERATION_PARAMS \
- (3, (1, PHOENIX_LOCAL_LIMIT, \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (1, BOOST_PHOENIX_LOCAL_LIMIT, \
     <boost/phoenix/scope/detail/make_locals.hpp>))
-#include PHOENIX_ITERATE()
+#include BOOST_PHOENIX_ITERATE()
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
@@ -72,18 +74,35 @@
 
 #else
 
- template <PHOENIX_typename_A>
- struct make_locals<PHOENIX_A>
+ template <BOOST_PHOENIX_typename_A>
+ struct make_locals<BOOST_PHOENIX_A>
         {
- BOOST_PP_REPEAT(PHOENIX_ITERATION, PHOENIX_TYPEDEF_LOCAL_TYPES, _)
- typedef fusion::map<BOOST_PP_REPEAT(PHOENIX_ITERATION, PHOENIX_TYPEDEF_LOCAL_PAIR_TYPES, _)> type;
+ BOOST_PP_REPEAT(
+ BOOST_PHOENIX_ITERATION
+ , BOOST_PHOENIX_TYPEDEF_LOCAL_TYPES
+ , _
+ )
+ typedef fusion::map<
+ BOOST_PP_REPEAT(
+ BOOST_PHOENIX_ITERATION
+ , BOOST_PHOENIX_TYPEDEF_LOCAL_PAIR_TYPES
+ , _
+ )
+ > type;
 
- static type const make(PHOENIX_A_a)
+ static type const make(BOOST_PHOENIX_A_a)
             {
- return type(BOOST_PP_REPEAT(PHOENIX_ITERATION, PHOENIX_CHILD_OF, _));
+ return
+ type(
+ BOOST_PP_REPEAT(
+ BOOST_PHOENIX_ITERATION
+ , BOOST_PHOENIX_CHILD_OF
+ , _
+ )
+ );
             }
         };
 
 #endif
 
-//#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,21 +5,21 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if !defined(PHOENIX_PREPROCESSED_DYNAMIC)
-#define PHOENIX_PREPROCESSED_DYNAMIC
+#if !defined(BOOST_PHOENIX_PREPROCESSED_DYNAMIC)
+#define BOOST_PHOENIX_PREPROCESSED_DYNAMIC
 
-#if PHOENIX_LIMIT <= 10
+#if BOOST_PHOENIX_LIMIT <= 10
 #include <boost/phoenix/scope/detail/preprocessed/dynamic_10.hpp>
-#elif PHOENIX_LIMIT <= 20
+#elif BOOST_PHOENIX_LIMIT <= 20
 #include <boost/phoenix/scope/detail/preprocessed/dynamic_20.hpp>
-#elif PHOENIX_LIMIT <= 30
+#elif BOOST_PHOENIX_LIMIT <= 30
 #include <boost/phoenix/scope/detail/preprocessed/dynamic_30.hpp>
-#elif PHOENIX_LIMIT <= 40
+#elif BOOST_PHOENIX_LIMIT <= 40
 #include <boost/phoenix/scope/detail/preprocessed/dynamic_40.hpp>
-#elif PHOENIX_LIMIT <= 50
+#elif BOOST_PHOENIX_LIMIT <= 50
 #include <boost/phoenix/scope/detail/preprocessed/dynamic_50.hpp>
 #else
-#error "PHOENIX_LIMIT out of bounds for preprocessed headers"
+#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
 #endif
 
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic_10.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic_10.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic_10.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -16,7 +16,7 @@
     struct dynamic<A0> : noncopyable
     {
         typedef
- fusion::vector1<A0>
+ vector1<A0>
             tuple_type;
         typedef
             dynamic<A0>
@@ -50,7 +50,7 @@
     struct dynamic<A0 , A1> : noncopyable
     {
         typedef
- fusion::vector2<A0 , A1>
+ vector2<A0 , A1>
             tuple_type;
         typedef
             dynamic<A0 , A1>
@@ -84,7 +84,7 @@
     struct dynamic<A0 , A1 , A2> : noncopyable
     {
         typedef
- fusion::vector3<A0 , A1 , A2>
+ vector3<A0 , A1 , A2>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2>
@@ -118,7 +118,7 @@
     struct dynamic<A0 , A1 , A2 , A3> : noncopyable
     {
         typedef
- fusion::vector4<A0 , A1 , A2 , A3>
+ vector4<A0 , A1 , A2 , A3>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3>
@@ -152,7 +152,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4> : noncopyable
     {
         typedef
- fusion::vector5<A0 , A1 , A2 , A3 , A4>
+ vector5<A0 , A1 , A2 , A3 , A4>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4>
@@ -186,7 +186,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5> : noncopyable
     {
         typedef
- fusion::vector6<A0 , A1 , A2 , A3 , A4 , A5>
+ vector6<A0 , A1 , A2 , A3 , A4 , A5>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5>
@@ -220,7 +220,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6> : noncopyable
     {
         typedef
- fusion::vector7<A0 , A1 , A2 , A3 , A4 , A5 , A6>
+ vector7<A0 , A1 , A2 , A3 , A4 , A5 , A6>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6>
@@ -254,7 +254,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7> : noncopyable
     {
         typedef
- fusion::vector8<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
+ vector8<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
@@ -288,7 +288,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> : noncopyable
     {
         typedef
- fusion::vector9<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
+ vector9<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
@@ -322,7 +322,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> : noncopyable
     {
         typedef
- fusion::vector10<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
+ vector10<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic_20.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic_20.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic_20.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -16,7 +16,7 @@
     struct dynamic<A0> : noncopyable
     {
         typedef
- fusion::vector1<A0>
+ vector1<A0>
             tuple_type;
         typedef
             dynamic<A0>
@@ -50,7 +50,7 @@
     struct dynamic<A0 , A1> : noncopyable
     {
         typedef
- fusion::vector2<A0 , A1>
+ vector2<A0 , A1>
             tuple_type;
         typedef
             dynamic<A0 , A1>
@@ -84,7 +84,7 @@
     struct dynamic<A0 , A1 , A2> : noncopyable
     {
         typedef
- fusion::vector3<A0 , A1 , A2>
+ vector3<A0 , A1 , A2>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2>
@@ -118,7 +118,7 @@
     struct dynamic<A0 , A1 , A2 , A3> : noncopyable
     {
         typedef
- fusion::vector4<A0 , A1 , A2 , A3>
+ vector4<A0 , A1 , A2 , A3>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3>
@@ -152,7 +152,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4> : noncopyable
     {
         typedef
- fusion::vector5<A0 , A1 , A2 , A3 , A4>
+ vector5<A0 , A1 , A2 , A3 , A4>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4>
@@ -186,7 +186,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5> : noncopyable
     {
         typedef
- fusion::vector6<A0 , A1 , A2 , A3 , A4 , A5>
+ vector6<A0 , A1 , A2 , A3 , A4 , A5>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5>
@@ -220,7 +220,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6> : noncopyable
     {
         typedef
- fusion::vector7<A0 , A1 , A2 , A3 , A4 , A5 , A6>
+ vector7<A0 , A1 , A2 , A3 , A4 , A5 , A6>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6>
@@ -254,7 +254,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7> : noncopyable
     {
         typedef
- fusion::vector8<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
+ vector8<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
@@ -288,7 +288,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> : noncopyable
     {
         typedef
- fusion::vector9<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
+ vector9<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
@@ -322,7 +322,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> : noncopyable
     {
         typedef
- fusion::vector10<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
+ vector10<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
@@ -356,7 +356,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10> : noncopyable
     {
         typedef
- fusion::vector11<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
+ vector11<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
@@ -390,7 +390,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11> : noncopyable
     {
         typedef
- fusion::vector12<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
+ vector12<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
@@ -424,7 +424,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12> : noncopyable
     {
         typedef
- fusion::vector13<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
+ vector13<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
@@ -458,7 +458,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13> : noncopyable
     {
         typedef
- fusion::vector14<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
+ vector14<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
@@ -492,7 +492,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14> : noncopyable
     {
         typedef
- fusion::vector15<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
+ vector15<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
@@ -526,7 +526,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15> : noncopyable
     {
         typedef
- fusion::vector16<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
+ vector16<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
@@ -560,7 +560,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16> : noncopyable
     {
         typedef
- fusion::vector17<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
+ vector17<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
@@ -594,7 +594,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17> : noncopyable
     {
         typedef
- fusion::vector18<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
+ vector18<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
@@ -628,7 +628,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18> : noncopyable
     {
         typedef
- fusion::vector19<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
+ vector19<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
@@ -662,7 +662,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19> : noncopyable
     {
         typedef
- fusion::vector20<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
+ vector20<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic_30.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic_30.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic_30.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -16,7 +16,7 @@
     struct dynamic<A0> : noncopyable
     {
         typedef
- fusion::vector1<A0>
+ vector1<A0>
             tuple_type;
         typedef
             dynamic<A0>
@@ -50,7 +50,7 @@
     struct dynamic<A0 , A1> : noncopyable
     {
         typedef
- fusion::vector2<A0 , A1>
+ vector2<A0 , A1>
             tuple_type;
         typedef
             dynamic<A0 , A1>
@@ -84,7 +84,7 @@
     struct dynamic<A0 , A1 , A2> : noncopyable
     {
         typedef
- fusion::vector3<A0 , A1 , A2>
+ vector3<A0 , A1 , A2>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2>
@@ -118,7 +118,7 @@
     struct dynamic<A0 , A1 , A2 , A3> : noncopyable
     {
         typedef
- fusion::vector4<A0 , A1 , A2 , A3>
+ vector4<A0 , A1 , A2 , A3>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3>
@@ -152,7 +152,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4> : noncopyable
     {
         typedef
- fusion::vector5<A0 , A1 , A2 , A3 , A4>
+ vector5<A0 , A1 , A2 , A3 , A4>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4>
@@ -186,7 +186,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5> : noncopyable
     {
         typedef
- fusion::vector6<A0 , A1 , A2 , A3 , A4 , A5>
+ vector6<A0 , A1 , A2 , A3 , A4 , A5>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5>
@@ -220,7 +220,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6> : noncopyable
     {
         typedef
- fusion::vector7<A0 , A1 , A2 , A3 , A4 , A5 , A6>
+ vector7<A0 , A1 , A2 , A3 , A4 , A5 , A6>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6>
@@ -254,7 +254,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7> : noncopyable
     {
         typedef
- fusion::vector8<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
+ vector8<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
@@ -288,7 +288,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> : noncopyable
     {
         typedef
- fusion::vector9<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
+ vector9<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
@@ -322,7 +322,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> : noncopyable
     {
         typedef
- fusion::vector10<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
+ vector10<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
@@ -356,7 +356,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10> : noncopyable
     {
         typedef
- fusion::vector11<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
+ vector11<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
@@ -390,7 +390,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11> : noncopyable
     {
         typedef
- fusion::vector12<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
+ vector12<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
@@ -424,7 +424,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12> : noncopyable
     {
         typedef
- fusion::vector13<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
+ vector13<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
@@ -458,7 +458,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13> : noncopyable
     {
         typedef
- fusion::vector14<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
+ vector14<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
@@ -492,7 +492,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14> : noncopyable
     {
         typedef
- fusion::vector15<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
+ vector15<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
@@ -526,7 +526,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15> : noncopyable
     {
         typedef
- fusion::vector16<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
+ vector16<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
@@ -560,7 +560,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16> : noncopyable
     {
         typedef
- fusion::vector17<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
+ vector17<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
@@ -594,7 +594,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17> : noncopyable
     {
         typedef
- fusion::vector18<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
+ vector18<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
@@ -628,7 +628,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18> : noncopyable
     {
         typedef
- fusion::vector19<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
+ vector19<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
@@ -662,7 +662,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19> : noncopyable
     {
         typedef
- fusion::vector20<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
+ vector20<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
@@ -696,7 +696,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20> : noncopyable
     {
         typedef
- fusion::vector21<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>
+ vector21<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>
@@ -730,7 +730,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21> : noncopyable
     {
         typedef
- fusion::vector22<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>
+ vector22<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>
@@ -764,7 +764,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22> : noncopyable
     {
         typedef
- fusion::vector23<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>
+ vector23<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>
@@ -798,7 +798,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23> : noncopyable
     {
         typedef
- fusion::vector24<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>
+ vector24<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>
@@ -832,7 +832,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24> : noncopyable
     {
         typedef
- fusion::vector25<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>
+ vector25<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>
@@ -866,7 +866,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25> : noncopyable
     {
         typedef
- fusion::vector26<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>
+ vector26<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>
@@ -900,7 +900,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26> : noncopyable
     {
         typedef
- fusion::vector27<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>
+ vector27<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>
@@ -934,7 +934,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector28<A0 , A1 , A2 , 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>
+ vector28<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -968,7 +968,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector29<A0 , A1 , A2 , 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>
+ vector29<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1002,7 +1002,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector30<A0 , A1 , A2 , 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>
+ vector30<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic_40.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic_40.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic_40.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -16,7 +16,7 @@
     struct dynamic<A0> : noncopyable
     {
         typedef
- fusion::vector1<A0>
+ vector1<A0>
             tuple_type;
         typedef
             dynamic<A0>
@@ -50,7 +50,7 @@
     struct dynamic<A0 , A1> : noncopyable
     {
         typedef
- fusion::vector2<A0 , A1>
+ vector2<A0 , A1>
             tuple_type;
         typedef
             dynamic<A0 , A1>
@@ -84,7 +84,7 @@
     struct dynamic<A0 , A1 , A2> : noncopyable
     {
         typedef
- fusion::vector3<A0 , A1 , A2>
+ vector3<A0 , A1 , A2>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2>
@@ -118,7 +118,7 @@
     struct dynamic<A0 , A1 , A2 , A3> : noncopyable
     {
         typedef
- fusion::vector4<A0 , A1 , A2 , A3>
+ vector4<A0 , A1 , A2 , A3>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3>
@@ -152,7 +152,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4> : noncopyable
     {
         typedef
- fusion::vector5<A0 , A1 , A2 , A3 , A4>
+ vector5<A0 , A1 , A2 , A3 , A4>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4>
@@ -186,7 +186,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5> : noncopyable
     {
         typedef
- fusion::vector6<A0 , A1 , A2 , A3 , A4 , A5>
+ vector6<A0 , A1 , A2 , A3 , A4 , A5>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5>
@@ -220,7 +220,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6> : noncopyable
     {
         typedef
- fusion::vector7<A0 , A1 , A2 , A3 , A4 , A5 , A6>
+ vector7<A0 , A1 , A2 , A3 , A4 , A5 , A6>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6>
@@ -254,7 +254,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7> : noncopyable
     {
         typedef
- fusion::vector8<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
+ vector8<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
@@ -288,7 +288,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> : noncopyable
     {
         typedef
- fusion::vector9<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
+ vector9<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
@@ -322,7 +322,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> : noncopyable
     {
         typedef
- fusion::vector10<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
+ vector10<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
@@ -356,7 +356,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10> : noncopyable
     {
         typedef
- fusion::vector11<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
+ vector11<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
@@ -390,7 +390,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11> : noncopyable
     {
         typedef
- fusion::vector12<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
+ vector12<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
@@ -424,7 +424,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12> : noncopyable
     {
         typedef
- fusion::vector13<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
+ vector13<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
@@ -458,7 +458,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13> : noncopyable
     {
         typedef
- fusion::vector14<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
+ vector14<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
@@ -492,7 +492,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14> : noncopyable
     {
         typedef
- fusion::vector15<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
+ vector15<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
@@ -526,7 +526,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15> : noncopyable
     {
         typedef
- fusion::vector16<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
+ vector16<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
@@ -560,7 +560,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16> : noncopyable
     {
         typedef
- fusion::vector17<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
+ vector17<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
@@ -594,7 +594,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17> : noncopyable
     {
         typedef
- fusion::vector18<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
+ vector18<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
@@ -628,7 +628,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18> : noncopyable
     {
         typedef
- fusion::vector19<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
+ vector19<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
@@ -662,7 +662,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19> : noncopyable
     {
         typedef
- fusion::vector20<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
+ vector20<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
@@ -696,7 +696,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20> : noncopyable
     {
         typedef
- fusion::vector21<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>
+ vector21<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>
@@ -730,7 +730,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21> : noncopyable
     {
         typedef
- fusion::vector22<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>
+ vector22<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>
@@ -764,7 +764,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22> : noncopyable
     {
         typedef
- fusion::vector23<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>
+ vector23<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>
@@ -798,7 +798,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23> : noncopyable
     {
         typedef
- fusion::vector24<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>
+ vector24<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>
@@ -832,7 +832,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24> : noncopyable
     {
         typedef
- fusion::vector25<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>
+ vector25<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>
@@ -866,7 +866,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25> : noncopyable
     {
         typedef
- fusion::vector26<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>
+ vector26<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>
@@ -900,7 +900,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26> : noncopyable
     {
         typedef
- fusion::vector27<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>
+ vector27<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>
@@ -934,7 +934,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector28<A0 , A1 , A2 , 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>
+ vector28<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -968,7 +968,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector29<A0 , A1 , A2 , 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>
+ vector29<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1002,7 +1002,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector30<A0 , A1 , A2 , 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>
+ vector30<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1036,7 +1036,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector31<A0 , A1 , A2 , 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>
+ vector31<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1070,7 +1070,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector32<A0 , A1 , A2 , 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>
+ vector32<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1104,7 +1104,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector33<A0 , A1 , A2 , 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>
+ vector33<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1138,7 +1138,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector34<A0 , A1 , A2 , 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>
+ vector34<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1172,7 +1172,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector35<A0 , A1 , A2 , 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>
+ vector35<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1206,7 +1206,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector36<A0 , A1 , A2 , 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>
+ vector36<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1240,7 +1240,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector37<A0 , A1 , A2 , 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>
+ vector37<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1274,7 +1274,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector38<A0 , A1 , A2 , 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>
+ vector38<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1308,7 +1308,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector39<A0 , A1 , A2 , 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>
+ vector39<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1342,7 +1342,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector40<A0 , A1 , A2 , 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>
+ vector40<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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/scope/detail/preprocessed/dynamic_50.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic_50.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/dynamic_50.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -16,7 +16,7 @@
     struct dynamic<A0> : noncopyable
     {
         typedef
- fusion::vector1<A0>
+ vector1<A0>
             tuple_type;
         typedef
             dynamic<A0>
@@ -50,7 +50,7 @@
     struct dynamic<A0 , A1> : noncopyable
     {
         typedef
- fusion::vector2<A0 , A1>
+ vector2<A0 , A1>
             tuple_type;
         typedef
             dynamic<A0 , A1>
@@ -84,7 +84,7 @@
     struct dynamic<A0 , A1 , A2> : noncopyable
     {
         typedef
- fusion::vector3<A0 , A1 , A2>
+ vector3<A0 , A1 , A2>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2>
@@ -118,7 +118,7 @@
     struct dynamic<A0 , A1 , A2 , A3> : noncopyable
     {
         typedef
- fusion::vector4<A0 , A1 , A2 , A3>
+ vector4<A0 , A1 , A2 , A3>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3>
@@ -152,7 +152,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4> : noncopyable
     {
         typedef
- fusion::vector5<A0 , A1 , A2 , A3 , A4>
+ vector5<A0 , A1 , A2 , A3 , A4>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4>
@@ -186,7 +186,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5> : noncopyable
     {
         typedef
- fusion::vector6<A0 , A1 , A2 , A3 , A4 , A5>
+ vector6<A0 , A1 , A2 , A3 , A4 , A5>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5>
@@ -220,7 +220,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6> : noncopyable
     {
         typedef
- fusion::vector7<A0 , A1 , A2 , A3 , A4 , A5 , A6>
+ vector7<A0 , A1 , A2 , A3 , A4 , A5 , A6>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6>
@@ -254,7 +254,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7> : noncopyable
     {
         typedef
- fusion::vector8<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
+ vector8<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
@@ -288,7 +288,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8> : noncopyable
     {
         typedef
- fusion::vector9<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
+ vector9<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
@@ -322,7 +322,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9> : noncopyable
     {
         typedef
- fusion::vector10<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
+ vector10<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
@@ -356,7 +356,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10> : noncopyable
     {
         typedef
- fusion::vector11<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
+ vector11<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
@@ -390,7 +390,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11> : noncopyable
     {
         typedef
- fusion::vector12<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
+ vector12<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
@@ -424,7 +424,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12> : noncopyable
     {
         typedef
- fusion::vector13<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
+ vector13<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
@@ -458,7 +458,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13> : noncopyable
     {
         typedef
- fusion::vector14<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
+ vector14<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
@@ -492,7 +492,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14> : noncopyable
     {
         typedef
- fusion::vector15<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
+ vector15<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
@@ -526,7 +526,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15> : noncopyable
     {
         typedef
- fusion::vector16<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
+ vector16<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
@@ -560,7 +560,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16> : noncopyable
     {
         typedef
- fusion::vector17<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
+ vector17<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
@@ -594,7 +594,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17> : noncopyable
     {
         typedef
- fusion::vector18<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
+ vector18<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
@@ -628,7 +628,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18> : noncopyable
     {
         typedef
- fusion::vector19<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
+ vector19<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
@@ -662,7 +662,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19> : noncopyable
     {
         typedef
- fusion::vector20<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
+ vector20<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
@@ -696,7 +696,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20> : noncopyable
     {
         typedef
- fusion::vector21<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>
+ vector21<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>
@@ -730,7 +730,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21> : noncopyable
     {
         typedef
- fusion::vector22<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>
+ vector22<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>
@@ -764,7 +764,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22> : noncopyable
     {
         typedef
- fusion::vector23<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>
+ vector23<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>
@@ -798,7 +798,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23> : noncopyable
     {
         typedef
- fusion::vector24<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>
+ vector24<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>
@@ -832,7 +832,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24> : noncopyable
     {
         typedef
- fusion::vector25<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>
+ vector25<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>
@@ -866,7 +866,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25> : noncopyable
     {
         typedef
- fusion::vector26<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>
+ vector26<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>
@@ -900,7 +900,7 @@
     struct dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26> : noncopyable
     {
         typedef
- fusion::vector27<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>
+ vector27<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>
@@ -934,7 +934,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector28<A0 , A1 , A2 , 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>
+ vector28<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -968,7 +968,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector29<A0 , A1 , A2 , 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>
+ vector29<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1002,7 +1002,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector30<A0 , A1 , A2 , 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>
+ vector30<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1036,7 +1036,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector31<A0 , A1 , A2 , 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>
+ vector31<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1070,7 +1070,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector32<A0 , A1 , A2 , 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>
+ vector32<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1104,7 +1104,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector33<A0 , A1 , A2 , 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>
+ vector33<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1138,7 +1138,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector34<A0 , A1 , A2 , 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>
+ vector34<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1172,7 +1172,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector35<A0 , A1 , A2 , 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>
+ vector35<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1206,7 +1206,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector36<A0 , A1 , A2 , 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>
+ vector36<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1240,7 +1240,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector37<A0 , A1 , A2 , 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>
+ vector37<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1274,7 +1274,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector38<A0 , A1 , A2 , 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>
+ vector38<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1308,7 +1308,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector39<A0 , A1 , A2 , 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>
+ vector39<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1342,7 +1342,7 @@
     struct dynamic<A0 , A1 , A2 , 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> : noncopyable
     {
         typedef
- fusion::vector40<A0 , A1 , A2 , 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>
+ vector40<A0 , A1 , A2 , 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>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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>
@@ -1376,7 +1376,7 @@
     struct dynamic<A0 , A1 , A2 , 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 , A40> : noncopyable
     {
         typedef
- fusion::vector41<A0 , A1 , A2 , 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 , A40>
+ vector41<A0 , A1 , A2 , 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 , A40>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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 , A40>
@@ -1410,7 +1410,7 @@
     struct dynamic<A0 , A1 , A2 , 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 , A40 , A41> : noncopyable
     {
         typedef
- fusion::vector42<A0 , A1 , A2 , 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 , A40 , A41>
+ vector42<A0 , A1 , A2 , 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 , A40 , A41>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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 , A40 , A41>
@@ -1444,7 +1444,7 @@
     struct dynamic<A0 , A1 , A2 , 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 , A40 , A41 , A42> : noncopyable
     {
         typedef
- fusion::vector43<A0 , A1 , A2 , 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 , A40 , A41 , A42>
+ vector43<A0 , A1 , A2 , 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 , A40 , A41 , A42>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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 , A40 , A41 , A42>
@@ -1478,7 +1478,7 @@
     struct dynamic<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43> : noncopyable
     {
         typedef
- fusion::vector44<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43>
+ vector44<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43>
@@ -1512,7 +1512,7 @@
     struct dynamic<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44> : noncopyable
     {
         typedef
- fusion::vector45<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44>
+ vector45<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44>
@@ -1546,7 +1546,7 @@
     struct dynamic<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45> : noncopyable
     {
         typedef
- fusion::vector46<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45>
+ vector46<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45>
@@ -1580,7 +1580,7 @@
     struct dynamic<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46> : noncopyable
     {
         typedef
- fusion::vector47<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46>
+ vector47<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46>
@@ -1614,7 +1614,7 @@
     struct dynamic<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47> : noncopyable
     {
         typedef
- fusion::vector48<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47>
+ vector48<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47>
@@ -1648,7 +1648,7 @@
     struct dynamic<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48> : noncopyable
     {
         typedef
- fusion::vector49<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48>
+ vector49<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48>
@@ -1682,7 +1682,7 @@
     struct dynamic<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 , A49> : noncopyable
     {
         typedef
- fusion::vector50<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 , A49>
+ vector50<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 , A49>
             tuple_type;
         typedef
             dynamic<A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 , A49>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,21 +5,21 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if !defined(PHOENIX_PREPROCESSED_LET_LOCAL_GEN)
-#define PHOENIX_PREPROCESSED_LET_LOCAL_GEN
+#if !defined(BOOST_PHOENIX_PREPROCESSED_LET_LOCAL_GEN)
+#define BOOST_PHOENIX_PREPROCESSED_LET_LOCAL_GEN
 
-#if PHOENIX_LIMIT <= 10
+#if BOOST_PHOENIX_LIMIT <= 10
 #include <boost/phoenix/scope/detail/preprocessed/let_local_gen_10.hpp>
-#elif PHOENIX_LIMIT <= 20
+#elif BOOST_PHOENIX_LIMIT <= 20
 #include <boost/phoenix/scope/detail/preprocessed/let_local_gen_20.hpp>
-#elif PHOENIX_LIMIT <= 30
+#elif BOOST_PHOENIX_LIMIT <= 30
 #include <boost/phoenix/scope/detail/preprocessed/let_local_gen_30.hpp>
-#elif PHOENIX_LIMIT <= 40
+#elif BOOST_PHOENIX_LIMIT <= 40
 #include <boost/phoenix/scope/detail/preprocessed/let_local_gen_40.hpp>
-#elif PHOENIX_LIMIT <= 50
+#elif BOOST_PHOENIX_LIMIT <= 50
 #include <boost/phoenix/scope/detail/preprocessed/let_local_gen_50.hpp>
 #else
-#error "PHOENIX_LIMIT out of bounds for preprocessed headers"
+#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
 #endif
 
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen_50.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen_50.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen_50.hpp 2011-02-21 06:53:02 EST (Mon, 21 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.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,21 +5,21 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if !defined(PHOENIX_PREPROCESSED_MAKE_LOCALS)
-#define PHOENIX_PREPROCESSED_MAKE_LOCALS
+#if !defined(BOOST_PHOENIX_PREPROCESSED_MAKE_LOCALS)
+#define BOOST_PHOENIX_PREPROCESSED_MAKE_LOCALS
 
-#if PHOENIX_LIMIT <= 10
+#if BOOST_PHOENIX_LIMIT <= 10
 #include <boost/phoenix/scope/detail/preprocessed/make_locals_10.hpp>
-#elif PHOENIX_LIMIT <= 20
+#elif BOOST_PHOENIX_LIMIT <= 20
 #include <boost/phoenix/scope/detail/preprocessed/make_locals_20.hpp>
-#elif PHOENIX_LIMIT <= 30
+#elif BOOST_PHOENIX_LIMIT <= 30
 #include <boost/phoenix/scope/detail/preprocessed/make_locals_30.hpp>
-#elif PHOENIX_LIMIT <= 40
+#elif BOOST_PHOENIX_LIMIT <= 40
 #include <boost/phoenix/scope/detail/preprocessed/make_locals_40.hpp>
-#elif PHOENIX_LIMIT <= 50
+#elif BOOST_PHOENIX_LIMIT <= 50
 #include <boost/phoenix/scope/detail/preprocessed/make_locals_50.hpp>
 #else
-#error "PHOENIX_LIMIT out of bounds for preprocessed headers"
+#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
 #endif
 
 #endif

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -15,11 +15,16 @@
         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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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));
+ return
+ type(
+ proto::child_c<1>(a0)
+ );
             }
         };
     
@@ -32,11 +37,16 @@
         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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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));
+ return
+ type(
+ proto::child_c<1>(a0) , proto::child_c<1>(a1)
+ );
             }
         };
     
@@ -49,11 +59,16 @@
         template <typename A0 , typename A1 , typename A2>
         struct make_locals<A0 , A1 , A2>
         {
- 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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 type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2));
+ return
+ type(
+ proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2)
+ );
             }
         };
     
@@ -66,11 +81,16 @@
         template <typename A0 , typename A1 , typename A2 , typename A3>
         struct make_locals<A0 , A1 , A2 , A3>
         {
- 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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 type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3));
+ return
+ type(
+ proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3)
+ );
             }
         };
     
@@ -83,11 +103,16 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         struct make_locals<A0 , A1 , A2 , A3 , A4>
         {
- 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -100,11 +125,16 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5>
         {
- 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -117,11 +147,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -134,11 +169,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -151,11 +191,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -168,10 +213,15 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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 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));
+ 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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -15,11 +15,16 @@
         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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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));
+ return
+ type(
+ proto::child_c<1>(a0)
+ );
             }
         };
     
@@ -32,11 +37,16 @@
         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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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));
+ return
+ type(
+ proto::child_c<1>(a0) , proto::child_c<1>(a1)
+ );
             }
         };
     
@@ -49,11 +59,16 @@
         template <typename A0 , typename A1 , typename A2>
         struct make_locals<A0 , A1 , A2>
         {
- 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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 type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2));
+ return
+ type(
+ proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2)
+ );
             }
         };
     
@@ -66,11 +81,16 @@
         template <typename A0 , typename A1 , typename A2 , typename A3>
         struct make_locals<A0 , A1 , A2 , A3>
         {
- 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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 type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3));
+ return
+ type(
+ proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3)
+ );
             }
         };
     
@@ -83,11 +103,16 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         struct make_locals<A0 , A1 , A2 , A3 , A4>
         {
- 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -100,11 +125,16 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5>
         {
- 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -117,11 +147,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -134,11 +169,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -151,11 +191,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -168,11 +213,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -185,11 +235,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -202,11 +257,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -219,11 +279,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -236,11 +301,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -253,11 +323,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -270,11 +345,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -287,11 +367,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f 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 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));
+ 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)
+ );
             }
         };
     
@@ -304,11 +389,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -321,11 +411,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -338,10 +433,15 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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 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));
+ 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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -15,11 +15,16 @@
         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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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));
+ return
+ type(
+ proto::child_c<1>(a0)
+ );
             }
         };
     
@@ -32,11 +37,16 @@
         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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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));
+ return
+ type(
+ proto::child_c<1>(a0) , proto::child_c<1>(a1)
+ );
             }
         };
     
@@ -49,11 +59,16 @@
         template <typename A0 , typename A1 , typename A2>
         struct make_locals<A0 , A1 , A2>
         {
- 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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 type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2));
+ return
+ type(
+ proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2)
+ );
             }
         };
     
@@ -66,11 +81,16 @@
         template <typename A0 , typename A1 , typename A2 , typename A3>
         struct make_locals<A0 , A1 , A2 , A3>
         {
- 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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 type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3));
+ return
+ type(
+ proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3)
+ );
             }
         };
     
@@ -83,11 +103,16 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         struct make_locals<A0 , A1 , A2 , A3 , A4>
         {
- 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -100,11 +125,16 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5>
         {
- 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -117,11 +147,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -134,11 +169,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -151,11 +191,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -168,11 +213,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -185,11 +235,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -202,11 +257,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -219,11 +279,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -236,11 +301,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -253,11 +323,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -270,11 +345,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -287,11 +367,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f 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 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));
+ 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)
+ );
             }
         };
     
@@ -304,11 +389,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -321,11 +411,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -338,11 +433,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -355,11 +455,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -372,11 +477,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21;
+ 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 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));
+ 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)
+ );
             }
         };
     
@@ -389,11 +499,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -406,11 +521,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -423,11 +543,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -440,11 +565,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -457,11 +587,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -474,11 +609,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f 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 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));
+ 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)
+ );
             }
         };
     
@@ -491,11 +631,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -508,10 +653,15 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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 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));
+ 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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -15,11 +15,16 @@
         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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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));
+ return
+ type(
+ proto::child_c<1>(a0)
+ );
             }
         };
     
@@ -32,11 +37,16 @@
         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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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));
+ return
+ type(
+ proto::child_c<1>(a0) , proto::child_c<1>(a1)
+ );
             }
         };
     
@@ -49,11 +59,16 @@
         template <typename A0 , typename A1 , typename A2>
         struct make_locals<A0 , A1 , A2>
         {
- 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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 type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2));
+ return
+ type(
+ proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2)
+ );
             }
         };
     
@@ -66,11 +81,16 @@
         template <typename A0 , typename A1 , typename A2 , typename A3>
         struct make_locals<A0 , A1 , A2 , A3>
         {
- 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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 type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3));
+ return
+ type(
+ proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3)
+ );
             }
         };
     
@@ -83,11 +103,16 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         struct make_locals<A0 , A1 , A2 , A3 , A4>
         {
- 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -100,11 +125,16 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5>
         {
- 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -117,11 +147,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -134,11 +169,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -151,11 +191,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -168,11 +213,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -185,11 +235,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -202,11 +257,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -219,11 +279,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -236,11 +301,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -253,11 +323,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -270,11 +345,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -287,11 +367,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f 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 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));
+ 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)
+ );
             }
         };
     
@@ -304,11 +389,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -321,11 +411,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -338,11 +433,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -355,11 +455,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -372,11 +477,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21;
+ 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 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));
+ 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)
+ );
             }
         };
     
@@ -389,11 +499,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -406,11 +521,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -423,11 +543,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -440,11 +565,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -457,11 +587,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -474,11 +609,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f 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 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));
+ 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)
+ );
             }
         };
     
@@ -491,11 +631,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -508,11 +653,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -525,11 +675,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef 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 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));
+ 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)
+ );
             }
         };
     
@@ -542,11 +697,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -559,11 +719,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -576,11 +741,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -593,11 +763,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -610,11 +785,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename proto::result_of::value< typename proto::result_of::child_c< A35 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -627,11 +807,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename proto::result_of::value< typename proto::result_of::child_c< A35 , 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< A36 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -644,11 +829,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename proto::result_of::value< typename proto::result_of::child_c< A35 , 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< A36 , 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< A37 , 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 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));
+ 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)
+ );
             }
         };
     
@@ -661,11 +851,16 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename proto::result_of::value< typename proto::result_of::child_c< A35 , 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< A36 , 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< A37 , 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< A38 , 0 >::type >::type tag_type38; typede
f 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 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));
+ 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)
+ );
             }
         };
     
@@ -678,10 +873,15 @@
         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 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;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename proto::result_of::value< typename proto::result_of::child_c< A35 , 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< A36 , 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< A37 , 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< A38 , 0 >::type >::type tag_type38; typede
f typename proto::result_of::child_c< A38 , 1 >::type var_type38; typedef typename proto::result_of::value< typename proto::result_of::child_c< A39 , 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 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));
+ 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/detail/preprocessed/make_locals_50.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_50.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_50.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -12,33 +12,62 @@
     
     
     
+ template <typename A0>
+ struct make_locals<A0>
+ {
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A0 , 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< A1 , 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< A0 , 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< A1 , 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< A2 , 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
+ type(
+ proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2)
                     );
             }
         };
@@ -52,30 +81,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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
+ type(
+ proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3)
                     );
             }
         };
@@ -89,30 +103,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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
+ 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,30 +125,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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
+ 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,30 +147,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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
+ 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,30 +169,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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
+ 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,30 +191,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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
+ 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 +213,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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
+ 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,30 +235,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 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
+ 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,30 +257,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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
+ 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,30 +279,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 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
+ 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,30 +301,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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
+ 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,30 +323,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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
+ 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,30 +345,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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
+ 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,30 +367,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f 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
+ 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,30 +389,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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
+ 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,30 +411,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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
+ 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 +433,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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
+ 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,30 +455,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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
+ 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,30 +477,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21;
+ 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
+ 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,30 +499,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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
+ 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,30 +521,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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
+ 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,30 +543,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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
+ 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,30 +565,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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
+ 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,30 +587,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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
+ 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,30 +609,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f 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
+ 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,30 +631,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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
+ 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 +653,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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
+ 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,30 +675,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef 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
+ 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,30 +697,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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
+ 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,30 +719,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 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
+ 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,30 +741,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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
+ 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,30 +763,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 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
+ 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,30 +785,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename proto::result_of::value< typename proto::result_of::child_c< A35 , 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
+ 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,30 +807,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename proto::result_of::value< typename proto::result_of::child_c< A35 , 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< A36 , 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
+ 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,30 +829,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename proto::result_of::value< typename proto::result_of::child_c< A35 , 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< A36 , 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< A37 , 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
+ 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,30 +851,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename proto::result_of::value< typename proto::result_of::child_c< A35 , 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< A36 , 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< A37 , 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< A38 , 0 >::type >::type tag_type38; typede
f 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
+ 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 +873,15 @@
         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< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename proto::result_of::value< typename proto::result_of::child_c< A35 , 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< A36 , 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< A37 , 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< A38 , 0 >::type >::type tag_type38; typede
f typename proto::result_of::child_c< A38 , 1 >::type var_type38; typedef typename proto::result_of::value< typename proto::result_of::child_c< A39 , 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
+ 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)
                     );
             }
         };
@@ -1421,30 +895,15 @@
         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 , typename A40>
         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 , A40>
         {
- 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 , A39
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A40
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename proto::result_of::value< typename proto::result_of::child_c< A35 , 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< A36 , 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< A37 , 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< A38 , 0 >::type >::type tag_type38; typede
f typename proto::result_of::child_c< A38 , 1 >::type var_type38; typedef typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type tag_type39; typedef typename proto::result_of::child_c< A39 , 1 >::type var_type39; typedef typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type tag_type40; typedef typename proto::result_of::child_c< A40 , 1 >::type var_type40;
+ 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> , fusion::pair<tag_type40, var_type40>
+ > 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 , A40 a40)
             {
                 return
- expression::sequence<
- type0
- , A40
- >::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 , A39
- >::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
- )
- , a40
+ 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) , proto::c
hild_c<1>(a40)
                     );
             }
         };
@@ -1458,30 +917,15 @@
         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 , typename A40 , typename A41>
         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 , A40 , A41>
         {
- 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 , A39 , A40
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A41
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename proto::result_of::value< typename proto::result_of::child_c< A35 , 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< A36 , 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< A37 , 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< A38 , 0 >::type >::type tag_type38; typede
f typename proto::result_of::child_c< A38 , 1 >::type var_type38; typedef typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type tag_type39; typedef typename proto::result_of::child_c< A39 , 1 >::type var_type39; typedef typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type tag_type40; typedef typename proto::result_of::child_c< A40 , 1 >::type var_type40; typedef typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type tag_type41; typedef typename proto::result_of::child_c< A41 , 1 >::type var_type41;
+ 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> , fusion::pair<tag_type40, var_type40> , fusion::pair<tag_type41, var_type41>
+ > 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 , A40 a40 , A41 a41)
             {
                 return
- expression::sequence<
- type0
- , A41
- >::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 , A39 , A40
- >::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 , a40
- )
- , a41
+ 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) , proto::c
hild_c<1>(a40) , proto::child_c<1>(a41)
                     );
             }
         };
@@ -1495,30 +939,15 @@
         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 , typename A40 , typename A41 , typename A42>
         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 , A40 , A41 , A42>
         {
- 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 , A39 , A40 , A41
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A42
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename proto::result_of::value< typename proto::result_of::child_c< A35 , 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< A36 , 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< A37 , 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< A38 , 0 >::type >::type tag_type38; typede
f typename proto::result_of::child_c< A38 , 1 >::type var_type38; typedef typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type tag_type39; typedef typename proto::result_of::child_c< A39 , 1 >::type var_type39; typedef typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type tag_type40; typedef typename proto::result_of::child_c< A40 , 1 >::type var_type40; typedef typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type tag_type41; typedef typename proto::result_of::child_c< A41 , 1 >::type var_type41; typedef typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type tag_type42; typedef typename proto::result_of::child_c< A42 , 1 >::type var_type42;
+ 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> , fusion::pair<tag_type40, var_type40> , fusion::pair<tag_type41, var_type41> , fusion::pair<tag_type42, var_type42>
+ > 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 , A40 a40 , A41 a41 , A42 a42)
             {
                 return
- expression::sequence<
- type0
- , A42
- >::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 , A39 , A40 , A41
- >::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 , a40 , a41
- )
- , a42
+ 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) , proto::c
hild_c<1>(a40) , proto::child_c<1>(a41) , proto::child_c<1>(a42)
                     );
             }
         };
@@ -1532,30 +961,15 @@
         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 , typename A40 , typename A41 , typename A42 , typename A43>
         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 , A40 , A41 , A42 , A43>
         {
- 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 , A39 , A40 , A41 , A42
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A43
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename proto::result_of::value< typename proto::result_of::child_c< A35 , 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< A36 , 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< A37 , 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< A38 , 0 >::type >::type tag_type38; typede
f typename proto::result_of::child_c< A38 , 1 >::type var_type38; typedef typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type tag_type39; typedef typename proto::result_of::child_c< A39 , 1 >::type var_type39; typedef typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type tag_type40; typedef typename proto::result_of::child_c< A40 , 1 >::type var_type40; typedef typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type tag_type41; typedef typename proto::result_of::child_c< A41 , 1 >::type var_type41; typedef typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type tag_type42; typedef typename proto::result_of::child_c< A42 , 1 >::type var_type42; typedef typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type tag_type43; typedef typename proto::result_of::child_c< A43 , 1 >::type var_type43;
+ 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> , fusion::pair<tag_type40, var_type40> , fusion::pair<tag_type41, var_type41> , fusion::pair<tag_type42, var_type42> , fusion::pair<tag_type43, var_type43>
+ > 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 , A40 a40 , A41 a41 , A42 a42 , A43 a43)
             {
                 return
- expression::sequence<
- type0
- , A43
- >::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 , A39 , A40 , A41 , A42
- >::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 , a40 , a41 , a42
- )
- , a43
+ 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) , proto::c
hild_c<1>(a40) , proto::child_c<1>(a41) , proto::child_c<1>(a42) , proto::child_c<1>(a43)
                     );
             }
         };
@@ -1569,30 +983,15 @@
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44>
         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 , A40 , A41 , A42 , A43 , A44>
         {
- 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 , A39 , A40 , A41 , A42 , A43
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A44
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename proto::result_of::value< typename proto::result_of::child_c< A35 , 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< A36 , 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< A37 , 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< A38 , 0 >::type >::type tag_type38; typede
f typename proto::result_of::child_c< A38 , 1 >::type var_type38; typedef typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type tag_type39; typedef typename proto::result_of::child_c< A39 , 1 >::type var_type39; typedef typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type tag_type40; typedef typename proto::result_of::child_c< A40 , 1 >::type var_type40; typedef typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type tag_type41; typedef typename proto::result_of::child_c< A41 , 1 >::type var_type41; typedef typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type tag_type42; typedef typename proto::result_of::child_c< A42 , 1 >::type var_type42; typedef typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type tag_type43; typedef typename proto::result_of::child_c< A43 , 1 >::type var_type43; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type tag_type44; typedef typename proto::result_of::child_c< A44 , 1 >::type var_type44;
+ 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> , fusion::pair<tag_type40, var_type40> , fusion::pair<tag_type41, var_type41> , fusion::pair<tag_type42, var_type42> , fusion::pair<tag_type43, var_type43> , fusion::pair<tag_type44, var_type44>
+ > 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 , A40 a40 , A41 a41 , A42 a42 , A43 a43 , A44 a44)
             {
                 return
- expression::sequence<
- type0
- , A44
- >::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 , A39 , A40 , A41 , A42 , A43
- >::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 , a40 , a41 , a42 , a43
- )
- , a44
+ 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) , proto::c
hild_c<1>(a40) , proto::child_c<1>(a41) , proto::child_c<1>(a42) , proto::child_c<1>(a43) , proto::child_c<1>(a44)
                     );
             }
         };
@@ -1606,30 +1005,15 @@
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
         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 , A40 , A41 , A42 , A43 , A44 , A45>
         {
- 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 , A39 , A40 , A41 , A42 , A43 , A44
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A45
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename proto::result_of::value< typename proto::result_of::child_c< A35 , 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< A36 , 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< A37 , 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< A38 , 0 >::type >::type tag_type38; typede
f typename proto::result_of::child_c< A38 , 1 >::type var_type38; typedef typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type tag_type39; typedef typename proto::result_of::child_c< A39 , 1 >::type var_type39; typedef typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type tag_type40; typedef typename proto::result_of::child_c< A40 , 1 >::type var_type40; typedef typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type tag_type41; typedef typename proto::result_of::child_c< A41 , 1 >::type var_type41; typedef typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type tag_type42; typedef typename proto::result_of::child_c< A42 , 1 >::type var_type42; typedef typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type tag_type43; typedef typename proto::result_of::child_c< A43 , 1 >::type var_type43; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type tag_type44; typedef typename proto::result_of::child_c< A44 , 1 >::type var_type44; typedef typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type tag_type45; typedef typename proto::result_of::child_c< A45 , 1 >::type var_type45;
+ 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> , fusion::pair<tag_type40, var_type40> , fusion::pair<tag_type41, var_type41> , fusion::pair<tag_type42, var_type42> , fusion::pair<tag_type43, var_type43> , fusion::pair<tag_type44, var_type44> , fusion::pair<tag_type45, var_type45>
+ > 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 , A40 a40 , A41 a41 , A42 a42 , A43 a43 , A44 a44 , A45 a45)
             {
                 return
- expression::sequence<
- type0
- , A45
- >::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 , A39 , A40 , A41 , A42 , A43 , A44
- >::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 , a40 , a41 , a42 , a43 , a44
- )
- , a45
+ 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) , proto::c
hild_c<1>(a40) , proto::child_c<1>(a41) , proto::child_c<1>(a42) , proto::child_c<1>(a43) , proto::child_c<1>(a44) , proto::child_c<1>(a45)
                     );
             }
         };
@@ -1643,30 +1027,15 @@
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
         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 , A40 , A41 , A42 , A43 , A44 , A45 , A46>
         {
- 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 , A39 , A40 , A41 , A42 , A43 , A44 , A45
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A46
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename proto::result_of::value< typename proto::result_of::child_c< A35 , 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< A36 , 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< A37 , 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< A38 , 0 >::type >::type tag_type38; typede
f typename proto::result_of::child_c< A38 , 1 >::type var_type38; typedef typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type tag_type39; typedef typename proto::result_of::child_c< A39 , 1 >::type var_type39; typedef typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type tag_type40; typedef typename proto::result_of::child_c< A40 , 1 >::type var_type40; typedef typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type tag_type41; typedef typename proto::result_of::child_c< A41 , 1 >::type var_type41; typedef typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type tag_type42; typedef typename proto::result_of::child_c< A42 , 1 >::type var_type42; typedef typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type tag_type43; typedef typename proto::result_of::child_c< A43 , 1 >::type var_type43; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type tag_type44; typedef typename proto::result_of::child_c< A44 , 1 >::type var_type44; typedef typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type tag_type45; typedef typename proto::result_of::child_c< A45 , 1 >::type var_type45; typedef typename proto::result_of::value< typename proto::result_of::child_c< A46 , 0 >::type >::type tag_type46; typedef typename proto::result_of::child_c< A46 , 1 >::type var_type46;
+ 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> , fusion::pair<tag_type40, var_type40> , fusion::pair<tag_type41, var_type41> , fusion::pair<tag_type42, var_type42> , fusion::pair<tag_type43, var_type43> , fusion::pair<tag_type44, var_type44> , fusion::pair<tag_type45, var_type45> , fusion::pair<tag_type46, var_type46>
+ > 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 , A40 a40 , A41 a41 , A42 a42 , A43 a43 , A44 a44 , A45 a45 , A46 a46)
             {
                 return
- expression::sequence<
- type0
- , A46
- >::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 , A39 , A40 , A41 , A42 , A43 , A44 , A45
- >::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 , a40 , a41 , a42 , a43 , a44 , a45
- )
- , a46
+ 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) , proto::c
hild_c<1>(a40) , proto::child_c<1>(a41) , proto::child_c<1>(a42) , proto::child_c<1>(a43) , proto::child_c<1>(a44) , proto::child_c<1>(a45) , proto::child_c<1>(a46)
                     );
             }
         };
@@ -1680,30 +1049,15 @@
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
         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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47>
         {
- 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 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A47
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename proto::result_of::value< typename proto::result_of::child_c< A35 , 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< A36 , 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< A37 , 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< A38 , 0 >::type >::type tag_type38; typede
f typename proto::result_of::child_c< A38 , 1 >::type var_type38; typedef typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type tag_type39; typedef typename proto::result_of::child_c< A39 , 1 >::type var_type39; typedef typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type tag_type40; typedef typename proto::result_of::child_c< A40 , 1 >::type var_type40; typedef typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type tag_type41; typedef typename proto::result_of::child_c< A41 , 1 >::type var_type41; typedef typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type tag_type42; typedef typename proto::result_of::child_c< A42 , 1 >::type var_type42; typedef typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type tag_type43; typedef typename proto::result_of::child_c< A43 , 1 >::type var_type43; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type tag_type44; typedef typename proto::result_of::child_c< A44 , 1 >::type var_type44; typedef typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type tag_type45; typedef typename proto::result_of::child_c< A45 , 1 >::type var_type45; typedef typename proto::result_of::value< typename proto::result_of::child_c< A46 , 0 >::type >::type tag_type46; typedef typename proto::result_of::child_c< A46 , 1 >::type var_type46; typedef typename proto::result_of::value< typename proto::result_of::child_c< A47 , 0 >::type >::type tag_type47; typedef typename proto::result_of::child_c< A47 , 1 >::type var_type47;
+ 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> , fusion::pair<tag_type40, var_type40> , fusion::pair<tag_type41, var_type41> , fusion::pair<tag_type42, var_type42> , fusion::pair<tag_type43, var_type43> , fusion::pair<tag_type44, var_type44> , fusion::pair<tag_type45, var_type45> , fusion::pair<tag_type46, var_type46> , fusion::pair<tag_type47, var_type47>
+ > 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 , A40 a40 , A41 a41 , A42 a42 , A43 a43 , A44 a44 , A45 a45 , A46 a46 , A47 a47)
             {
                 return
- expression::sequence<
- type0
- , A47
- >::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 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46
- >::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 , a40 , a41 , a42 , a43 , a44 , a45 , a46
- )
- , a47
+ 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) , proto::c
hild_c<1>(a40) , proto::child_c<1>(a41) , proto::child_c<1>(a42) , proto::child_c<1>(a43) , proto::child_c<1>(a44) , proto::child_c<1>(a45) , proto::child_c<1>(a46) , proto::child_c<1>(a47)
                     );
             }
         };
@@ -1717,30 +1071,15 @@
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
         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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48>
         {
- 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 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A48
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename proto::result_of::value< typename proto::result_of::child_c< A35 , 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< A36 , 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< A37 , 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< A38 , 0 >::type >::type tag_type38; typede
f typename proto::result_of::child_c< A38 , 1 >::type var_type38; typedef typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type tag_type39; typedef typename proto::result_of::child_c< A39 , 1 >::type var_type39; typedef typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type tag_type40; typedef typename proto::result_of::child_c< A40 , 1 >::type var_type40; typedef typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type tag_type41; typedef typename proto::result_of::child_c< A41 , 1 >::type var_type41; typedef typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type tag_type42; typedef typename proto::result_of::child_c< A42 , 1 >::type var_type42; typedef typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type tag_type43; typedef typename proto::result_of::child_c< A43 , 1 >::type var_type43; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type tag_type44; typedef typename proto::result_of::child_c< A44 , 1 >::type var_type44; typedef typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type tag_type45; typedef typename proto::result_of::child_c< A45 , 1 >::type var_type45; typedef typename proto::result_of::value< typename proto::result_of::child_c< A46 , 0 >::type >::type tag_type46; typedef typename proto::result_of::child_c< A46 , 1 >::type var_type46; typedef typename proto::result_of::value< typename proto::result_of::child_c< A47 , 0 >::type >::type tag_type47; typedef typename proto::result_of::child_c< A47 , 1 >::type var_type47; typedef typename proto::result_of::value< typename proto::result_of::child_c< A48 , 0 >::type >::type tag_type48; typedef typename proto::result_of::child_c< A48 , 1 >::type var_type48;
+ 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> , fusion::pair<tag_type40, var_type40> , fusion::pair<tag_type41, var_type41> , fusion::pair<tag_type42, var_type42> , fusion::pair<tag_type43, var_type43> , fusion::pair<tag_type44, var_type44> , fusion::pair<tag_type45, var_type45> , fusion::pair<tag_type46, var_type46> , fusion::pair<tag_type47, var_type47> , fusion::pair<tag_type48, var_type48>
+ > 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 , A40 a40 , A41 a41 , A42 a42 , A43 a43 , A44 a44 , A45 a45 , A46 a46 , A47 a47 , A48 a48)
             {
                 return
- expression::sequence<
- type0
- , A48
- >::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 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47
- >::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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47
- )
- , a48
+ 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) , proto::c
hild_c<1>(a40) , proto::child_c<1>(a41) , proto::child_c<1>(a42) , proto::child_c<1>(a43) , proto::child_c<1>(a44) , proto::child_c<1>(a45) , proto::child_c<1>(a46) , proto::child_c<1>(a47) , proto::child_c<1>(a48)
                     );
             }
         };
@@ -1754,30 +1093,15 @@
         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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
         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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 , A49>
         {
- 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 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A49
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< A0 , 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< A1 , 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< A2 , 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< A3 , 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< A4 , 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< A5 , 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< A6 , 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< A7 , 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< A8 , 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< A9 , 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< A10 , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A11 , 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< A12 , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename proto::result_of::child_c< A13 , 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< A14 , 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< A15 , 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< A16 , 0 >::type >::type tag_type16; typede
f typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< A17 , 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< A18 , 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< A19 , 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< A20 , 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< A21 , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_type21; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A22 , 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< A23 , 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< A24 , 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< A25 , 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< A26 , 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< A27 , 0 >::type >::type tag_type27; typede
f typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< A28 , 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< A29 , 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< A30 , 0 >::type >::type tag_type30; typedef typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< A31 , 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< A32 , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A33 , 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< A34 , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename proto::result_of::value< typename proto::result_of::child_c< A35 , 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< A36 , 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< A37 , 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< A38 , 0 >::type >::type tag_type38; typede
f typename proto::result_of::child_c< A38 , 1 >::type var_type38; typedef typename proto::result_of::value< typename proto::result_of::child_c< A39 , 0 >::type >::type tag_type39; typedef typename proto::result_of::child_c< A39 , 1 >::type var_type39; typedef typename proto::result_of::value< typename proto::result_of::child_c< A40 , 0 >::type >::type tag_type40; typedef typename proto::result_of::child_c< A40 , 1 >::type var_type40; typedef typename proto::result_of::value< typename proto::result_of::child_c< A41 , 0 >::type >::type tag_type41; typedef typename proto::result_of::child_c< A41 , 1 >::type var_type41; typedef typename proto::result_of::value< typename proto::result_of::child_c< A42 , 0 >::type >::type tag_type42; typedef typename proto::result_of::child_c< A42 , 1 >::type var_type42; typedef typename proto::result_of::value< typename proto::result_of::child_c< A43 , 0 >::type >::type tag_type43; typedef typename proto::result_of::child_c< A43 , 1 >::type var_type43; typedef typename proto::res
ult_of::value< typename proto::result_of::child_c< A44 , 0 >::type >::type tag_type44; typedef typename proto::result_of::child_c< A44 , 1 >::type var_type44; typedef typename proto::result_of::value< typename proto::result_of::child_c< A45 , 0 >::type >::type tag_type45; typedef typename proto::result_of::child_c< A45 , 1 >::type var_type45; typedef typename proto::result_of::value< typename proto::result_of::child_c< A46 , 0 >::type >::type tag_type46; typedef typename proto::result_of::child_c< A46 , 1 >::type var_type46; typedef typename proto::result_of::value< typename proto::result_of::child_c< A47 , 0 >::type >::type tag_type47; typedef typename proto::result_of::child_c< A47 , 1 >::type var_type47; typedef typename proto::result_of::value< typename proto::result_of::child_c< A48 , 0 >::type >::type tag_type48; typedef typename proto::result_of::child_c< A48 , 1 >::type var_type48; typedef typename proto::result_of::value< typename proto::result_of::child_c< A49 , 0 >::type >::type tag_type49; typede
f typename proto::result_of::child_c< A49 , 1 >::type var_type49;
+ 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> , fusion::pair<tag_type40, var_type40> , fusion::pair<tag_type41, var_type41> , fusion::pair<tag_type42, var_type42> , fusion::pair<tag_type43, var_type43> , fusion::pair<tag_type44, var_type44> , fusion::pair<tag_type45, var_type45> , fusion::pair<tag_type46, var_type46> , fusion::pair<tag_type47, var_type47> , fusion::pair<tag_type48, var_type48> , fusion::pair<tag_type49, var_type49>
+ > 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 , A40 a40 , A41 a41 , A42 a42 , A43 a43 , A44 a44 , A45 a45 , A46 a46 , A47 a47 , A48 a48 , A49 a49)
             {
                 return
- expression::sequence<
- type0
- , A49
- >::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 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48
- >::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 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47 , a48
- )
- , a49
+ 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) , proto::c
hild_c<1>(a40) , proto::child_c<1>(a41) , proto::child_c<1>(a42) , proto::child_c<1>(a43) , proto::child_c<1>(a44) , proto::child_c<1>(a45) , proto::child_c<1>(a46) , proto::child_c<1>(a47) , proto::child_c<1>(a48) , proto::child_c<1>(a49)
                     );
             }
         };

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -6,8 +6,8 @@
     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_SCOPE_DYNAMIC_HPP
-#define PHOENIX_SCOPE_DYNAMIC_HPP
+#ifndef BOOST_PHOENIX_SCOPE_DYNAMIC_HPP
+#define BOOST_PHOENIX_SCOPE_DYNAMIC_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/assert.hpp>
@@ -22,54 +22,54 @@
 #include <boost/preprocessor/punctuation/comma.hpp>
 #include <boost/type_traits/remove_pointer.hpp>
 
-#define BOOST_PHOENIX_DYNAMIC_TEMPLATE_PARAMS(R, DATA, I, ELEM) \
+#define BOOST_BOOST_PHOENIX_DYNAMIC_TEMPLATE_PARAMS(R, DATA, I, ELEM) \
       BOOST_PP_COMMA_IF(I) BOOST_PP_TUPLE_ELEM(2, 0, ELEM) \
 /**/
 
-#define BOOST_PHOENIX_DYNAMIC_CTOR_INIT(R, DATA, I, ELEM) \
+#define BOOST_BOOST_PHOENIX_DYNAMIC_CTOR_INIT(R, DATA, I, ELEM) \
     BOOST_PP_COMMA_IF(I) BOOST_PP_TUPLE_ELEM(2, 1, ELEM)(init<I>(this)) \
 /**/
 
-#define BOOST_PHOENIX_DYNAMIC_MEMBER(R, DATA, I, ELEM) \
+#define BOOST_BOOST_PHOENIX_DYNAMIC_MEMBER(R, DATA, I, ELEM) \
     BOOST_PP_CAT(member, BOOST_PP_INC(I)) BOOST_PP_TUPLE_ELEM(2, 1, ELEM); \
 /**/
 
-#define BOOST_PHOENIX_DYNAMIC_FILLER_0(X, Y) \
- ((X, Y)) BOOST_PHOENIX_DYNAMIC_FILLER_1 \
+#define BOOST_BOOST_PHOENIX_DYNAMIC_FILLER_0(X, Y) \
+ ((X, Y)) BOOST_BOOST_PHOENIX_DYNAMIC_FILLER_1 \
 /**/
 
-#define BOOST_PHOENIX_DYNAMIC_FILLER_1(X, Y) \
- ((X, Y)) BOOST_PHOENIX_DYNAMIC_FILLER_0 \
+#define BOOST_BOOST_PHOENIX_DYNAMIC_FILLER_1(X, Y) \
+ ((X, Y)) BOOST_BOOST_PHOENIX_DYNAMIC_FILLER_0 \
 /**/
 
-#define BOOST_PHOENIX_DYNAMIC_FILLER_0_END
-#define BOOST_PHOENIX_DYNAMIC_FILLER_1_END
+#define BOOST_BOOST_PHOENIX_DYNAMIC_FILLER_0_END
+#define BOOST_BOOST_PHOENIX_DYNAMIC_FILLER_1_END
 
-#define BOOST_PHOENIX_DYNAMIC_BASE(NAME, MEMBER) \
+#define BOOST_BOOST_PHOENIX_DYNAMIC_BASE(NAME, MEMBER) \
 struct NAME \
     : ::boost::phoenix::dynamic< \
         BOOST_PP_SEQ_FOR_EACH_I( \
- BOOST_PHOENIX_DYNAMIC_TEMPLATE_PARAMS \
+ BOOST_BOOST_PHOENIX_DYNAMIC_TEMPLATE_PARAMS \
               , _ \
               , MEMBER) \
> \
 { \
     NAME() \
- : BOOST_PP_SEQ_FOR_EACH_I(BOOST_PHOENIX_DYNAMIC_CTOR_INIT, _, MEMBER) \
+ : BOOST_PP_SEQ_FOR_EACH_I(BOOST_BOOST_PHOENIX_DYNAMIC_CTOR_INIT, _, MEMBER) \
     {} \
                                                                                 \
- BOOST_PP_SEQ_FOR_EACH_I(BOOST_PHOENIX_DYNAMIC_MEMBER, _, MEMBER) \
+ BOOST_PP_SEQ_FOR_EACH_I(BOOST_BOOST_PHOENIX_DYNAMIC_MEMBER, _, MEMBER) \
 } \
 /**/
 
-#define BOOST_PHOENIX_DYNAMIC(NAME, MEMBER) \
- BOOST_PHOENIX_DYNAMIC_BASE( \
+#define BOOST_BOOST_PHOENIX_DYNAMIC(NAME, MEMBER) \
+ BOOST_BOOST_PHOENIX_DYNAMIC_BASE( \
         NAME \
- , BOOST_PP_CAT(BOOST_PHOENIX_DYNAMIC_FILLER_0 MEMBER,_END) \
+ , BOOST_PP_CAT(BOOST_BOOST_PHOENIX_DYNAMIC_FILLER_0 MEMBER,_END) \
     ) \
 /**/
 
-PHOENIX_DEFINE_EXPRESSION(
+BOOST_PHOENIX_DEFINE_EXPRESSION(
     (boost)(phoenix)(dynamic_member)
   , (proto::terminal<proto::_>)
     (proto::terminal<proto::_>)
@@ -153,7 +153,7 @@
     {};
     
     template <
- PHOENIX_typename_A_void(PHOENIX_DYNAMIC_LIMIT)
+ BOOST_PHOENIX_typename_A_void(BOOST_PHOENIX_DYNAMIC_LIMIT)
       , typename Dummy = void
>
     struct dynamic;

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -6,8 +6,8 @@
     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_SCOPE_LAMBDA_HPP
-#define PHOENIX_SCOPE_LAMBDA_HPP
+#ifndef BOOST_PHOENIX_SCOPE_LAMBDA_HPP
+#define BOOST_PHOENIX_SCOPE_LAMBDA_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/mpl/int.hpp>
@@ -17,7 +17,7 @@
 #include <boost/phoenix/scope/local_variable.hpp>
 #include <boost/phoenix/scope/scoped_environment.hpp>
     
-PHOENIX_DEFINE_EXPRESSION(
+BOOST_PHOENIX_DEFINE_EXPRESSION(
     (boost)(phoenix)(lambda)
   , (proto::terminal<proto::_>) // OuterEnv
     (proto::terminal<proto::_>) // Locals
@@ -349,18 +349,25 @@
             return lambda_actor_gen<>();
         }
 
- #define PHOENIX_LAMBDA_LOCAL_GEN(Z, N, DATA) \
- template <PHOENIX_typename_A(N)> \
+ #define BOOST_PHOENIX_LAMBDA_LOCAL_GEN(Z, N, DATA) \
+ template <BOOST_PHOENIX_typename_A(N)> \
         lambda_actor_gen< \
- typename detail::make_locals<PHOENIX_A(N)>::type \
+ typename detail::make_locals<BOOST_PHOENIX_A(N)>::type \
> const \
- operator()(PHOENIX_A_const_ref_a(N)) const \
+ operator()(BOOST_PHOENIX_A_const_ref_a(N)) const \
         { \
- return detail::make_locals<PHOENIX_A(N)>::make(PHOENIX_a(N)); \
+ return \
+ detail::make_locals<BOOST_PHOENIX_A(N)> \
+ ::make(BOOST_PHOENIX_a(N)); \
         } \
     /**/
- BOOST_PP_REPEAT_FROM_TO(1, PHOENIX_LOCAL_LIMIT, PHOENIX_LAMBDA_LOCAL_GEN, _)
-
+ BOOST_PP_REPEAT_FROM_TO(
+ 1
+ , BOOST_PHOENIX_LOCAL_LIMIT
+ , BOOST_PHOENIX_LAMBDA_LOCAL_GEN
+ , _
+ )
+ #undef BOOST_PHOENIX_LAMBDA_LOCAL_GEN
     };
 
     lambda_local_gen const lambda = lambda_local_gen();

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -6,8 +6,8 @@
     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_SCOPE_LET_HPP
-#define PHOENIX_SCOPE_LET_HPP
+#ifndef BOOST_PHOENIX_SCOPE_LET_HPP
+#define BOOST_PHOENIX_SCOPE_LET_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/fusion/algorithm/transformation/transform.hpp>
@@ -19,7 +19,7 @@
 #include <boost/phoenix/support/iterate.hpp>
 #include <boost/phoenix/support/vector.hpp>
 
-PHOENIX_DEFINE_EXPRESSION(
+BOOST_PHOENIX_DEFINE_EXPRESSION(
     (boost)(phoenix)(let)
   , (proto::terminal<proto::_>)
     (meta_grammar)

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_SCOPE_LOCAL_VARIABLE_HPP
-#define PHOENIX_SCOPE_LOCAL_VARIABLE_HPP
+#ifndef BOOST_PHOENIX_SCOPE_LOCAL_VARIABLE_HPP
+#define BOOST_PHOENIX_SCOPE_LOCAL_VARIABLE_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/fusion/container/map.hpp>
@@ -259,7 +259,7 @@
     namespace detail
     {
         template <
- PHOENIX_typename_A_void(PHOENIX_LOCAL_LIMIT)
+ BOOST_PHOENIX_typename_A_void(BOOST_PHOENIX_LOCAL_LIMIT)
           , typename Dummy = void
>
         struct make_locals;

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/scoped_environment.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/scoped_environment.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/scoped_environment.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_SCOPE_SCOPED_ENVIRONMENT_HPP
-#define PHOENIX_SCOPE_SCOPED_ENVIRONMENT_HPP
+#ifndef BOOST_PHOENIX_SCOPE_SCOPED_ENVIRONMENT_HPP
+#define BOOST_PHOENIX_SCOPE_SCOPED_ENVIRONMENT_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/mpl/int.hpp>
@@ -28,21 +28,11 @@
           , fusion::random_access_traversal_tag
>
     {
- /*
- typedef typename boost::remove_reference<Env>::type env_type;
- typedef typename boost::remove_reference<OuterEnv>::type outer_env_type;
- typedef typename boost::remove_reference<Locals>::type locals_type;
- */
         typedef Env env_type;
         typedef OuterEnv outer_env_type;
         typedef Locals locals_type;
 
         scoped_environment(
- /*
- env_type& env
- , outer_env_type& outer_env
- , locals_type & locals
- */
             Env env
           , OuterEnv outer_env
           , Locals locals
@@ -58,20 +48,19 @@
             , locals(o.locals)
         {}
 
- /*
- env_type env;
- outer_env_type outer_env;
- locals_type locals;
- */
         Env env;
         OuterEnv outer_env;
         Locals locals;
     
- #define PHOENIX_ADAPT_SCOPED_ENVIRONMENT(INTRINSIC) \
+ #define BOOST_PHOENIX_ADAPT_SCOPED_ENVIRONMENT(INTRINSIC) \
         template <typename Seq> \
         struct INTRINSIC \
         { \
- typedef typename fusion::result_of::INTRINSIC<typename Seq::env_type>::type type; \
+ typedef \
+ typename fusion::result_of::INTRINSIC< \
+ typename Seq::env_type \
+ >::type \
+ type; \
                                                                                 \
             static type call(Seq & seq) \
             { \
@@ -79,23 +68,31 @@
             } \
         } \
         /**/
- PHOENIX_ADAPT_SCOPED_ENVIRONMENT(begin);
- PHOENIX_ADAPT_SCOPED_ENVIRONMENT(end);
- PHOENIX_ADAPT_SCOPED_ENVIRONMENT(size);
- #undef PHOENIX_ADAPT_SCOPED_ENVIRONMENT
+ BOOST_PHOENIX_ADAPT_SCOPED_ENVIRONMENT(begin);
+ BOOST_PHOENIX_ADAPT_SCOPED_ENVIRONMENT(end);
+ BOOST_PHOENIX_ADAPT_SCOPED_ENVIRONMENT(size);
+ #undef BOOST_PHOENIX_ADAPT_SCOPED_ENVIRONMENT
     
         template <typename Seq, typename N>
         struct value_at
         {
             typedef
- typename fusion::result_of::value_at<typename proto::detail::uncvref<typename Seq::env_type>::type, N>::type
+ typename fusion::result_of::value_at<
+ typename proto::detail::uncvref<typename Seq::env_type>::type
+ , N
+ >::type
                 type;
         };
         
         template <typename Seq, typename N>
         struct at
         {
- typedef typename fusion::result_of::at<typename proto::detail::uncvref<typename Seq::env_type>::type, N>::type type;
+ typedef
+ typename fusion::result_of::at<
+ typename proto::detail::uncvref<typename Seq::env_type>::type
+ , N
+ >::type
+ type;
 
             static type call(Seq & seq)
             {

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_SCOPE_THIS_HPP
-#define PHOENIX_SCOPE_THIS_HPP
+#ifndef BOOST_PHOENIX_SCOPE_THIS_HPP
+#define BOOST_PHOENIX_SCOPE_THIS_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/actor.hpp>
@@ -16,10 +16,10 @@
 #include <boost/phoenix/core/terminal.hpp>
 #include <boost/type_traits/remove_pointer.hpp>
 
-PHOENIX_DEFINE_EXPRESSION_VARARG(
+BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG(
     (boost)(phoenix)(this_function)
   , (meta_grammar)
- , PHOENIX_LIMIT
+ , BOOST_PHOENIX_LIMIT
 )
 
 namespace boost { namespace phoenix {

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -4,8 +4,8 @@
     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_STATEMENT_HPP
-#define PHOENIX_STATEMENT_HPP
+#ifndef BOOST_PHOENIX_STATEMENT_HPP
+#define BOOST_PHOENIX_STATEMENT_HPP
 
 #include <boost/phoenix/version.hpp>
 #include <boost/phoenix/statement/do_while.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/catch_push_back.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/catch_push_back.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/catch_push_back.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,7 +1,7 @@
 
-#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_STATEMENT_DETAIL_CATCH_PUSH_BACK_HPP
-#define PHOENIX_STATEMENT_DETAIL_CATCH_PUSH_BACK_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_STATEMENT_DETAIL_CATCH_PUSH_BACK_HPP
+#define BOOST_PHOENIX_STATEMENT_DETAIL_CATCH_PUSH_BACK_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
@@ -10,15 +10,15 @@
 #endif
 #else
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_STATEMENT_DETAIL_CATCH_PUSH_BACK_HPP
-#define PHOENIX_STATEMENT_DETAIL_CATCH_PUSH_BACK_HPP
+#ifndef BOOST_PHOENIX_STATEMENT_DETAIL_CATCH_PUSH_BACK_HPP
+#define BOOST_PHOENIX_STATEMENT_DETAIL_CATCH_PUSH_BACK_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/catch_push_back_" PHOENIX_LIMIT_STR ".hpp")
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/catch_push_back_" BOOST_PHOENIX_LIMIT_STR ".hpp")
 #endif
 
 /*==============================================================================
@@ -29,28 +29,28 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(preserve: 1)
 #endif
 
- #define PHOENIX_CATCH_PUSH_BACK_R0(Z, N, DATA) \
+ #define BOOST_PHOENIX_CATCH_PUSH_BACK_R0(Z, N, DATA) \
         BOOST_PP_COMMA_IF(N) \
         typename proto::result_of::child_c<TryCatch, N>::type \
     /**/
 
- #define PHOENIX_CATCH_PUSH_BACK_R1(Z, N, DATA) \
+ #define BOOST_PHOENIX_CATCH_PUSH_BACK_R1(Z, N, DATA) \
         BOOST_PP_COMMA_IF(N) proto::child_c<N>(try_catch) \
     /**/
 
-#define PHOENIX_ITERATION_PARAMS \
- (3, (2, PHOENIX_CATCH_LIMIT, \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (2, BOOST_PHOENIX_CATCH_LIMIT, \
         <boost/phoenix/statement/detail/catch_push_back.hpp>))
-#include PHOENIX_ITERATE()
+#include BOOST_PHOENIX_ITERATE()
     
- #undef PHOENIX_CATCH_PUSH_BACK_R0
- #undef PHOENIX_CATCH_PUSH_BACK_R1
+ #undef BOOST_PHOENIX_CATCH_PUSH_BACK_R0
+ #undef BOOST_PHOENIX_CATCH_PUSH_BACK_R1
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
@@ -58,7 +58,7 @@
 
 #else
         template <typename TryCatch, typename Exception, typename Expr>
- struct catch_push_back<TryCatch, Exception, Expr, PHOENIX_ITERATION>
+ struct catch_push_back<TryCatch, Exception, Expr, BOOST_PHOENIX_ITERATION>
         {
             typedef
                 typename proto::result_of::make_expr<
@@ -70,7 +70,7 @@
                 catch_expr;
 
             typedef expression::try_catch<
- BOOST_PP_REPEAT(PHOENIX_ITERATION, PHOENIX_CATCH_PUSH_BACK_R0, _)
+ BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, BOOST_PHOENIX_CATCH_PUSH_BACK_R0, _)
               , catch_expr> gen_type;
             typedef typename gen_type::type type;
 
@@ -83,8 +83,8 @@
                 return
                     gen_type::make(
                         BOOST_PP_REPEAT(
- PHOENIX_ITERATION
- , PHOENIX_CATCH_PUSH_BACK_R1
+ BOOST_PHOENIX_ITERATION
+ , BOOST_PHOENIX_CATCH_PUSH_BACK_R1
                           , _
                         )
                       , proto::make_expr<
@@ -96,7 +96,7 @@
         };
         
         template <typename TryCatch, typename Expr>
- struct catch_all_push_back<TryCatch, Expr, PHOENIX_ITERATION>
+ struct catch_all_push_back<TryCatch, Expr, BOOST_PHOENIX_ITERATION>
         {
             typedef
                 typename proto::result_of::make_expr<
@@ -107,7 +107,7 @@
                 catch_expr;
 
             typedef expression::try_catch<
- BOOST_PP_REPEAT(PHOENIX_ITERATION, PHOENIX_CATCH_PUSH_BACK_R0, _)
+ BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, BOOST_PHOENIX_CATCH_PUSH_BACK_R0, _)
               , catch_expr> gen_type;
             typedef typename gen_type::type type;
 
@@ -120,8 +120,8 @@
                 return
                     gen_type::make(
                         BOOST_PP_REPEAT(
- PHOENIX_ITERATION
- , PHOENIX_CATCH_PUSH_BACK_R1
+ BOOST_PHOENIX_ITERATION
+ , BOOST_PHOENIX_CATCH_PUSH_BACK_R1
                           , _
                         )
                       , proto::make_expr<
@@ -134,4 +134,4 @@
 
 #endif
 
-#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/catch_push_back.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/catch_push_back.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/catch_push_back.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,21 +5,21 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if !defined(PHOENIX_PREPROCESSED_CATCH_PUSH_BACK)
-#define PHOENIX_PREPROCESSED_CATCH_PUSH_BACK
+#if !defined(BOOST_PHOENIX_PREPROCESSED_CATCH_PUSH_BACK)
+#define BOOST_PHOENIX_PREPROCESSED_CATCH_PUSH_BACK
 
-#if PHOENIX_LIMIT <= 10
+#if BOOST_PHOENIX_LIMIT <= 10
 #include <boost/phoenix/statement/detail/preprocessed/catch_push_back_10.hpp>
-#elif PHOENIX_LIMIT <= 20
+#elif BOOST_PHOENIX_LIMIT <= 20
 #include <boost/phoenix/statement/detail/preprocessed/catch_push_back_20.hpp>
-#elif PHOENIX_LIMIT <= 30
+#elif BOOST_PHOENIX_LIMIT <= 30
 #include <boost/phoenix/statement/detail/preprocessed/catch_push_back_30.hpp>
-#elif PHOENIX_LIMIT <= 40
+#elif BOOST_PHOENIX_LIMIT <= 40
 #include <boost/phoenix/statement/detail/preprocessed/catch_push_back_40.hpp>
-#elif PHOENIX_LIMIT <= 50
+#elif BOOST_PHOENIX_LIMIT <= 50
 #include <boost/phoenix/statement/detail/preprocessed/catch_push_back_50.hpp>
 #else
-#error "PHOENIX_LIMIT out of bounds for preprocessed headers"
+#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
 #endif
 
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,21 +5,21 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if !defined(PHOENIX_PREPROCESSED_SWITCH)
-#define PHOENIX_PREPROCESSED_SWITCH
+#if !defined(BOOST_PHOENIX_PREPROCESSED_SWITCH)
+#define BOOST_PHOENIX_PREPROCESSED_SWITCH
 
-#if PHOENIX_LIMIT <= 10
+#if BOOST_PHOENIX_LIMIT <= 10
 #include <boost/phoenix/statement/detail/preprocessed/switch_10.hpp>
-#elif PHOENIX_LIMIT <= 20
+#elif BOOST_PHOENIX_LIMIT <= 20
 #include <boost/phoenix/statement/detail/preprocessed/switch_20.hpp>
-#elif PHOENIX_LIMIT <= 30
+#elif BOOST_PHOENIX_LIMIT <= 30
 #include <boost/phoenix/statement/detail/preprocessed/switch_30.hpp>
-#elif PHOENIX_LIMIT <= 40
+#elif BOOST_PHOENIX_LIMIT <= 40
 #include <boost/phoenix/statement/detail/preprocessed/switch_40.hpp>
-#elif PHOENIX_LIMIT <= 50
+#elif BOOST_PHOENIX_LIMIT <= 50
 #include <boost/phoenix/statement/detail/preprocessed/switch_50.hpp>
 #else
-#error "PHOENIX_LIMIT out of bounds for preprocessed headers"
+#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
 #endif
 
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_10.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_10.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_10.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,111 +5,6 @@
     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 Context, typename Cond, typename Cases>
- result_type
- evaluate(
- Context & ctx
- , Cond const & cond
- , Cases const & cases
- , mpl::int_<0> size
- , mpl::false_
- ) const
- {
-
- switch(eval(cond, ctx))
- {
-
- }
- }
- template <typename Context, typename Cond, typename Cases>
- result_type
- evaluate(
- Context & ctx
- , Cond const & cond
- , Cases const & cases
- , mpl::int_<0> size
- , mpl::true_
- ) const
- {
-
- mpl::int_<0>
- idx0;
- switch(eval(cond, ctx))
- {
-
- default:
- eval(
- proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx0
- , size
- )
- )
- , ctx
- );
- }
- }
-
-
-
-
-
-
-
- template <typename Context, typename Cond, typename Cases>
- result_type
- evaluate(
- Context & ctx
- , Cond const & cond
- , Cases const & cases
- , mpl::int_<1> size
- , mpl::false_
- ) const
- {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<1> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0;
- switch(eval(cond, ctx))
- {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break;
- }
- }
- template <typename Context, typename Cond, typename Cases>
- result_type
- evaluate(
- Context & ctx
- , Cond const & cond
- , Cases const & cases
- , mpl::int_<1> size
- , mpl::true_
- ) const
- {
-
- mpl::int_<0>
- idx0;
- switch(eval(cond, ctx))
- {
-
- default:
- eval(
- proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx0
- , size
- )
- )
- , ctx
- );
- }
- }
     
     
     
@@ -127,10 +22,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<2> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<2> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -143,19 +45,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<2> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0;
- mpl::int_<1>
- idx1;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx1
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 1
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -179,10 +86,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<3> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<3> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<3> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -195,19 +109,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<3> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<3> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1;
- mpl::int_<2>
- idx2;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx2
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 2
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -231,10 +150,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<4> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<4> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<4> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<4> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -247,19 +173,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<4> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<4> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<4> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2;
- mpl::int_<3>
- idx3;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx3
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 3
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -283,10 +214,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<5> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<5> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<5> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<5> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<5> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -299,19 +237,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<5> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<5> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<5> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<5> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3;
- mpl::int_<4>
- idx4;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx4
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 4
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -335,10 +278,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<6> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<6> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<6> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<6> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<6> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<6> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -351,19 +301,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<6> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<6> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<6> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<6> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<6> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4;
- mpl::int_<5>
- idx5;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx5
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 5
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -387,10 +342,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<7> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<7> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<7> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<7> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<7> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<7> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<7> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -403,19 +365,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<7> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<7> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<7> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<7> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<7> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<7> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5;
- mpl::int_<6>
- idx6;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx6
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 6
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -439,10 +406,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<8> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<8> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<8> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<8> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<8> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<8> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<8> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<8> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -455,19 +429,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<8> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<8> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<8> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<8> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<8> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<8> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<8> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6;
- mpl::int_<7>
- idx7;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx7
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 7
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -491,10 +470,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<9> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<9> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<9> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<9> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<9> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<9> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<9> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<9> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< detail::sw
itch_grammar( Cases , mpl::int_<8> , mpl::int_<9> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -507,19 +493,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<9> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<9> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<9> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<9> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<9> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<9> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<9> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<9> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7;
- mpl::int_<8>
- idx8;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx8
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 8
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -543,10 +534,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<10> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<10> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<10> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<10> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<10> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<10> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<10> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<10> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<10> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<10> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -559,19 +557,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<10> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<10> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<10> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<10> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<10> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<10> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<10> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<10> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<10> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8;
- mpl::int_<9>
- idx9;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx9
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 9
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_20.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_20.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_20.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,111 +5,6 @@
     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 Context, typename Cond, typename Cases>
- result_type
- evaluate(
- Context & ctx
- , Cond const & cond
- , Cases const & cases
- , mpl::int_<0> size
- , mpl::false_
- ) const
- {
-
- switch(eval(cond, ctx))
- {
-
- }
- }
- template <typename Context, typename Cond, typename Cases>
- result_type
- evaluate(
- Context & ctx
- , Cond const & cond
- , Cases const & cases
- , mpl::int_<0> size
- , mpl::true_
- ) const
- {
-
- mpl::int_<0>
- idx0;
- switch(eval(cond, ctx))
- {
-
- default:
- eval(
- proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx0
- , size
- )
- )
- , ctx
- );
- }
- }
-
-
-
-
-
-
-
- template <typename Context, typename Cond, typename Cases>
- result_type
- evaluate(
- Context & ctx
- , Cond const & cond
- , Cases const & cases
- , mpl::int_<1> size
- , mpl::false_
- ) const
- {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<1> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0;
- switch(eval(cond, ctx))
- {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break;
- }
- }
- template <typename Context, typename Cond, typename Cases>
- result_type
- evaluate(
- Context & ctx
- , Cond const & cond
- , Cases const & cases
- , mpl::int_<1> size
- , mpl::true_
- ) const
- {
-
- mpl::int_<0>
- idx0;
- switch(eval(cond, ctx))
- {
-
- default:
- eval(
- proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx0
- , size
- )
- )
- , ctx
- );
- }
- }
     
     
     
@@ -127,10 +22,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<2> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<2> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -143,19 +45,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<2> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0;
- mpl::int_<1>
- idx1;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx1
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 1
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -179,10 +86,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<3> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<3> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<3> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -195,19 +109,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<3> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<3> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1;
- mpl::int_<2>
- idx2;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx2
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 2
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -231,10 +150,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<4> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<4> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<4> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<4> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -247,19 +173,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<4> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<4> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<4> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2;
- mpl::int_<3>
- idx3;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx3
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 3
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -283,10 +214,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<5> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<5> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<5> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<5> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<5> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -299,19 +237,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<5> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<5> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<5> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<5> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3;
- mpl::int_<4>
- idx4;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx4
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 4
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -335,10 +278,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<6> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<6> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<6> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<6> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<6> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<6> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -351,19 +301,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<6> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<6> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<6> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<6> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<6> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4;
- mpl::int_<5>
- idx5;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx5
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 5
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -387,10 +342,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<7> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<7> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<7> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<7> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<7> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<7> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<7> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -403,19 +365,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<7> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<7> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<7> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<7> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<7> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<7> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5;
- mpl::int_<6>
- idx6;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx6
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 6
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -439,10 +406,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<8> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<8> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<8> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<8> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<8> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<8> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<8> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<8> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -455,19 +429,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<8> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<8> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<8> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<8> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<8> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<8> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<8> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6;
- mpl::int_<7>
- idx7;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx7
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 7
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -491,10 +470,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<9> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<9> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<9> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<9> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<9> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<9> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<9> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<9> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< detail::sw
itch_grammar( Cases , mpl::int_<8> , mpl::int_<9> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -507,19 +493,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<9> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<9> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<9> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<9> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<9> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<9> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<9> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<9> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7;
- mpl::int_<8>
- idx8;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx8
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 8
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -543,10 +534,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<10> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<10> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<10> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<10> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<10> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<10> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<10> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<10> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<10> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<10> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -559,19 +557,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<10> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<10> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<10> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<10> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<10> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<10> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<10> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<10> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<10> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8;
- mpl::int_<9>
- idx9;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx9
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 9
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -595,10 +598,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<11> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<11> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<11> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<11> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<11> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<11> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<11> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<11> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<11> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<11> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<11> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -611,19 +621,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<11> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<11> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<11> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<11> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<11> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<11> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<11> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<11> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<11> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<11> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9;
- mpl::int_<10>
- idx10;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx10
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 10
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -647,10 +662,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<12> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<12> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<12> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<12> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<12> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<12> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<12> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<12> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<12> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<12> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<12> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<12> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -663,19 +685,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<12> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<12> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<12> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<12> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<12> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<12> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<12> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<12> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<12> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<12> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<12> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10;
- mpl::int_<11>
- idx11;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx11
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 11
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -699,10 +726,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<13> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<13> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<13> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<13> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<13> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<13> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<13> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<13> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<13> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<13> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<13> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<13> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<13> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -715,19 +749,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<13> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<13> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<13> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<13> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<13> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<13> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<13> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<13> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<13> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<13> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<13> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<13> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11;
- mpl::int_<12>
- idx12;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx12
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 12
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -751,10 +790,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<14> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<14> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<14> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<14> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<14> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<14> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<14> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<14> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<14> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<14> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<14> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<14> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<14> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<14> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -767,19 +813,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<14> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<14> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<14> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<14> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<14> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<14> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<14> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<14> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<14> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<14> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<14> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<14> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<14> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12;
- mpl::int_<13>
- idx13;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx13
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 13
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -803,10 +854,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<15> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<15> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<15> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<15> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<15> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<15> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<15> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<15> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<15> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<15> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<15> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<15> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<15> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<15> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<15> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -819,19 +877,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<15> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<15> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<15> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<15> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<15> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<15> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<15> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<15> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<15> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<15> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<15> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<15> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<15> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<15> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13;
- mpl::int_<14>
- idx14;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx14
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 14
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -855,10 +918,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<16> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<16> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<16> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<16> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<16> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<16> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<16> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<16> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<16> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<16> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<16> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<16> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<16> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<16> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<16> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<16> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -871,19 +941,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<16> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<16> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<16> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<16> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<16> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<16> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<16> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<16> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<16> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<16> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<16> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<16> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<16> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<16> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<16> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14;
- mpl::int_<15>
- idx15;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx15
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 15
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -907,10 +982,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<17> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<17> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<17> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<17> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<17> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<17> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<17> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<17> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<17> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<17> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<17> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<17> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<17> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<17> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<17> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<17> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<17> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -923,19 +1005,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<17> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<17> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<17> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<17> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<17> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<17> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<17> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<17> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<17> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<17> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<17> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<17> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<17> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<17> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<17> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<17> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15;
- mpl::int_<16>
- idx16;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx16
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 16
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -959,10 +1046,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<18> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<18> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<18> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<18> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<18> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<18> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<18> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<18> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<18> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<18> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<18> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<18> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<18> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<18> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<18> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<18> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<18> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<18> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -975,19 +1069,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<18> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<18> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<18> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<18> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<18> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<18> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<18> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<18> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<18> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<18> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<18> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<18> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<18> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<18> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<18> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<18> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<18> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16;
- mpl::int_<17>
- idx17;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx17
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 17
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1011,10 +1110,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<19> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<19> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<19> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<19> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<19> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<19> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<19> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<19> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<19> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<19> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<19> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<19> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<19> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<19> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<19> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<19> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<19> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<19> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<19> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1027,19 +1133,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<19> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<19> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<19> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<19> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<19> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<19> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<19> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<19> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<19> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<19> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<19> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<19> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<19> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<19> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<19> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<19> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<19> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<19> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17;
- mpl::int_<18>
- idx18;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx18
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 18
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1063,10 +1174,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<20> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<20> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<20> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<20> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<20> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<20> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<20> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<20> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<20> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<20> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<20> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<20> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<20> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<20> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<20> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<20> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<20> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<20> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<20> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<20> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1079,19 +1197,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<20> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<20> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<20> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<20> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<20> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<20> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<20> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<20> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<20> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<20> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<20> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<20> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<20> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<20> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<20> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<20> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<20> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<20> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<20> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18;
- mpl::int_<19>
- idx19;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx19
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 19
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_30.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_30.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_30.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,111 +5,6 @@
     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 Context, typename Cond, typename Cases>
- result_type
- evaluate(
- Context & ctx
- , Cond const & cond
- , Cases const & cases
- , mpl::int_<0> size
- , mpl::false_
- ) const
- {
-
- switch(eval(cond, ctx))
- {
-
- }
- }
- template <typename Context, typename Cond, typename Cases>
- result_type
- evaluate(
- Context & ctx
- , Cond const & cond
- , Cases const & cases
- , mpl::int_<0> size
- , mpl::true_
- ) const
- {
-
- mpl::int_<0>
- idx0;
- switch(eval(cond, ctx))
- {
-
- default:
- eval(
- proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx0
- , size
- )
- )
- , ctx
- );
- }
- }
-
-
-
-
-
-
-
- template <typename Context, typename Cond, typename Cases>
- result_type
- evaluate(
- Context & ctx
- , Cond const & cond
- , Cases const & cases
- , mpl::int_<1> size
- , mpl::false_
- ) const
- {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<1> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0;
- switch(eval(cond, ctx))
- {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break;
- }
- }
- template <typename Context, typename Cond, typename Cases>
- result_type
- evaluate(
- Context & ctx
- , Cond const & cond
- , Cases const & cases
- , mpl::int_<1> size
- , mpl::true_
- ) const
- {
-
- mpl::int_<0>
- idx0;
- switch(eval(cond, ctx))
- {
-
- default:
- eval(
- proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx0
- , size
- )
- )
- , ctx
- );
- }
- }
     
     
     
@@ -127,10 +22,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<2> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<2> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -143,19 +45,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<2> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0;
- mpl::int_<1>
- idx1;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx1
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 1
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -179,10 +86,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<3> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<3> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<3> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -195,19 +109,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<3> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<3> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1;
- mpl::int_<2>
- idx2;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx2
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 2
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -231,10 +150,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<4> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<4> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<4> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<4> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -247,19 +173,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<4> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<4> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<4> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2;
- mpl::int_<3>
- idx3;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx3
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 3
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -283,10 +214,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<5> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<5> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<5> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<5> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<5> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -299,19 +237,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<5> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<5> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<5> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<5> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3;
- mpl::int_<4>
- idx4;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx4
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 4
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -335,10 +278,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<6> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<6> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<6> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<6> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<6> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<6> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -351,19 +301,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<6> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<6> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<6> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<6> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<6> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4;
- mpl::int_<5>
- idx5;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx5
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 5
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -387,10 +342,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<7> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<7> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<7> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<7> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<7> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<7> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<7> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -403,19 +365,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<7> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<7> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<7> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<7> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<7> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<7> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5;
- mpl::int_<6>
- idx6;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx6
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 6
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -439,10 +406,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<8> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<8> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<8> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<8> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<8> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<8> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<8> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<8> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -455,19 +429,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<8> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<8> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<8> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<8> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<8> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<8> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<8> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6;
- mpl::int_<7>
- idx7;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx7
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 7
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -491,10 +470,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<9> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<9> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<9> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<9> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<9> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<9> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<9> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<9> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< detail::sw
itch_grammar( Cases , mpl::int_<8> , mpl::int_<9> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -507,19 +493,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<9> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<9> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<9> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<9> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<9> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<9> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<9> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<9> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7;
- mpl::int_<8>
- idx8;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx8
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 8
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -543,10 +534,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<10> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<10> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<10> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<10> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<10> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<10> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<10> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<10> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<10> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<10> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -559,19 +557,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<10> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<10> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<10> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<10> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<10> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<10> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<10> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<10> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<10> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8;
- mpl::int_<9>
- idx9;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx9
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 9
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -595,10 +598,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<11> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<11> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<11> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<11> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<11> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<11> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<11> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<11> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<11> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<11> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<11> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -611,19 +621,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<11> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<11> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<11> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<11> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<11> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<11> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<11> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<11> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<11> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<11> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9;
- mpl::int_<10>
- idx10;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx10
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 10
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -647,10 +662,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<12> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<12> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<12> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<12> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<12> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<12> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<12> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<12> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<12> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<12> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<12> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<12> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -663,19 +685,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<12> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<12> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<12> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<12> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<12> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<12> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<12> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<12> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<12> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<12> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<12> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10;
- mpl::int_<11>
- idx11;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx11
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 11
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -699,10 +726,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<13> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<13> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<13> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<13> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<13> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<13> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<13> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<13> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<13> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<13> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<13> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<13> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<13> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -715,19 +749,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<13> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<13> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<13> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<13> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<13> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<13> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<13> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<13> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<13> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<13> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<13> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<13> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11;
- mpl::int_<12>
- idx12;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx12
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 12
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -751,10 +790,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<14> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<14> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<14> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<14> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<14> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<14> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<14> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<14> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<14> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<14> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<14> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<14> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<14> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<14> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -767,19 +813,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<14> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<14> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<14> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<14> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<14> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<14> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<14> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<14> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<14> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<14> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<14> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<14> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<14> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12;
- mpl::int_<13>
- idx13;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx13
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 13
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -803,10 +854,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<15> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<15> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<15> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<15> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<15> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<15> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<15> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<15> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<15> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<15> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<15> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<15> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<15> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<15> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<15> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -819,19 +877,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<15> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<15> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<15> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<15> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<15> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<15> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<15> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<15> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<15> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<15> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<15> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<15> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<15> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<15> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13;
- mpl::int_<14>
- idx14;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx14
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 14
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -855,10 +918,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<16> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<16> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<16> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<16> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<16> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<16> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<16> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<16> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<16> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<16> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<16> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<16> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<16> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<16> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<16> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<16> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -871,19 +941,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<16> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<16> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<16> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<16> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<16> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<16> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<16> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<16> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<16> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<16> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<16> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<16> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<16> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<16> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<16> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14;
- mpl::int_<15>
- idx15;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx15
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 15
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -907,10 +982,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<17> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<17> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<17> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<17> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<17> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<17> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<17> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<17> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<17> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<17> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<17> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<17> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<17> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<17> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<17> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<17> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<17> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -923,19 +1005,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<17> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<17> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<17> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<17> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<17> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<17> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<17> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<17> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<17> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<17> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<17> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<17> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<17> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<17> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<17> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<17> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15;
- mpl::int_<16>
- idx16;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx16
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 16
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -959,10 +1046,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<18> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<18> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<18> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<18> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<18> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<18> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<18> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<18> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<18> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<18> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<18> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<18> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<18> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<18> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<18> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<18> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<18> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<18> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -975,19 +1069,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<18> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<18> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<18> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<18> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<18> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<18> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<18> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<18> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<18> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<18> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<18> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<18> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<18> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<18> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<18> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<18> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<18> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16;
- mpl::int_<17>
- idx17;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx17
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 17
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1011,10 +1110,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<19> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<19> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<19> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<19> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<19> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<19> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<19> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<19> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<19> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<19> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<19> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<19> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<19> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<19> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<19> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<19> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<19> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<19> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<19> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1027,19 +1133,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<19> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<19> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<19> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<19> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<19> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<19> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<19> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<19> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<19> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<19> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<19> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<19> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<19> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<19> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<19> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<19> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<19> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<19> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17;
- mpl::int_<18>
- idx18;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx18
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 18
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1063,10 +1174,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<20> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<20> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<20> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<20> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<20> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<20> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<20> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<20> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<20> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<20> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<20> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<20> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<20> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<20> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<20> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<20> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<20> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<20> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<20> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<20> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1079,19 +1197,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<20> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<20> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<20> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<20> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<20> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<20> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<20> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<20> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<20> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<20> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<20> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<20> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<20> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<20> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<20> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<20> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<20> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<20> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<20> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18;
- mpl::int_<19>
- idx19;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx19
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 19
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1115,10 +1238,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<21> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<21> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<21> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<21> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<21> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<21> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<21> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<21> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<21> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<21> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<21> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<21> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<21> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<21> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<21> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<21> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<21> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<21> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<21> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<21> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<21> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1131,19 +1261,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<21> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<21> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<21> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<21> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<21> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<21> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<21> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<21> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<21> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<21> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<21> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<21> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<21> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<21> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<21> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<21> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<21> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<21> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<21> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<21> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19;
- mpl::int_<20>
- idx20;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx20
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 20
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1167,10 +1302,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<22> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<22> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<22> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<22> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<22> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<22> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<22> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<22> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<22> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<22> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<22> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<22> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<22> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<22> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<22> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<22> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<22> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<22> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<22> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<22> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<22> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<22> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1183,19 +1325,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<22> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<22> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<22> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<22> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<22> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<22> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<22> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<22> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<22> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<22> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<22> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<22> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<22> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<22> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<22> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<22> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<22> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<22> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<22> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<22> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<22> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20;
- mpl::int_<21>
- idx21;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx21
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 21
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1219,10 +1366,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<23> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<23> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<23> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<23> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<23> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<23> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<23> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<23> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<23> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<23> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<23> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<23> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<23> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<23> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<23> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<23> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<23> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<23> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<23> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<23> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<23> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<23> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<23> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1235,19 +1389,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<23> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<23> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<23> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<23> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<23> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<23> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<23> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<23> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<23> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<23> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<23> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<23> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<23> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<23> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<23> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<23> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<23> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<23> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<23> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<23> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<23> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<23> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21;
- mpl::int_<22>
- idx22;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx22
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 22
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1271,10 +1430,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<24> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<24> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<24> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<24> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<24> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<24> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<24> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<24> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<24> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<24> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<24> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<24> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<24> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<24> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<24> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<24> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<24> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<24> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<24> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<24> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<24> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<24> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<24> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<24> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1287,19 +1453,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<24> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<24> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<24> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<24> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<24> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<24> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<24> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<24> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<24> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<24> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<24> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<24> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<24> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<24> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<24> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<24> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<24> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<24> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<24> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<24> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<24> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<24> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<24> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22;
- mpl::int_<23>
- idx23;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx23
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 23
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1323,10 +1494,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<25> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<25> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<25> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<25> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<25> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<25> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<25> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<25> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<25> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<25> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<25> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<25> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<25> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<25> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<25> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<25> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<25> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<25> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<25> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<25> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<25> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<25> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<25> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<25> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<25> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1339,19 +1517,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<25> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<25> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<25> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<25> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<25> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<25> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<25> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<25> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<25> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<25> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<25> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<25> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<25> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<25> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<25> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<25> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<25> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<25> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<25> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<25> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<25> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<25> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<25> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<25> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23;
- mpl::int_<24>
- idx24;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx24
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 24
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1375,10 +1558,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<26> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<26> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<26> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<26> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<26> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<26> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<26> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<26> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<26> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<26> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<26> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<26> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<26> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<26> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<26> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<26> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<26> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<26> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<26> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<26> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<26> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<26> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<26> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<26> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<26> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<26> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1391,19 +1581,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<26> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<26> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<26> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<26> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<26> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<26> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<26> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<26> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<26> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<26> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<26> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<26> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<26> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<26> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<26> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<26> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<26> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<26> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<26> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<26> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<26> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<26> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<26> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<26> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<26> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24;
- mpl::int_<25>
- idx25;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx25
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 25
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1427,10 +1622,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<27> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<27> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<27> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<27> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<27> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<27> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<27> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<27> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<27> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<27> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<27> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<27> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<27> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<27> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<27> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<27> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<27> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<27> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<27> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<27> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<27> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<27> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<27> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<27> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<27> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<27> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<27> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1443,19 +1645,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<27> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<27> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<27> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<27> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<27> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<27> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<27> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<27> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<27> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<27> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<27> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<27> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<27> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<27> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<27> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<27> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<27> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<27> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<27> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<27> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<27> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<27> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<27> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<27> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<27> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<27> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25;
- mpl::int_<26>
- idx26;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx26
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 26
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1479,10 +1686,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<28> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<28> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<28> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<28> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<28> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<28> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<28> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<28> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<28> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<28> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<28> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<28> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<28> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<28> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<28> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<28> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<28> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<28> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<28> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<28> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<28> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<28> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<28> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<28> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<28> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<28> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<28> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<28> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1495,19 +1709,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<28> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<28> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<28> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<28> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<28> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<28> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<28> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<28> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<28> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<28> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<28> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<28> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<28> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<28> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<28> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<28> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<28> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<28> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<28> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<28> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<28> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<28> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<28> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<28> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<28> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<28> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<28> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26;
- mpl::int_<27>
- idx27;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx27
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 27
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1531,10 +1750,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<29> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<29> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<29> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<29> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<29> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<29> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<29> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<29> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<29> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<29> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<29> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<29> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<29> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<29> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<29> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<29> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<29> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<29> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<29> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<29> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<29> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<29> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<29> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<29> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<29> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<29> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<29> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<29> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<29> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1547,19 +1773,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<29> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<29> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<29> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<29> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<29> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<29> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<29> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<29> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<29> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<29> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<29> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<29> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<29> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<29> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<29> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<29> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<29> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<29> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<29> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<29> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<29> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<29> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<29> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<29> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<29> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<29> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<29> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<29> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27;
- mpl::int_<28>
- idx28;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx28
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 28
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1583,10 +1814,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<30> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<30> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<30> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<30> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<30> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<30> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<30> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<30> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<30> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<30> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<30> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<30> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<30> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<30> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<30> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<30> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<30> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<30> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<30> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<30> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<30> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<30> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<30> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<30> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<30> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<30> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<30> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<30> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<30> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<30> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1599,19 +1837,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<30> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<30> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<30> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<30> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<30> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<30> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<30> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<30> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<30> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<30> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<30> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<30> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<30> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<30> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<30> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<30> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<30> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<30> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<30> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<30> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<30> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<30> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<30> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<30> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<30> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<30> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<30> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<30> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<30> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28;
- mpl::int_<29>
- idx29;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx29
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 29
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_40.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_40.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_40.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,111 +5,6 @@
     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 Context, typename Cond, typename Cases>
- result_type
- evaluate(
- Context & ctx
- , Cond const & cond
- , Cases const & cases
- , mpl::int_<0> size
- , mpl::false_
- ) const
- {
-
- switch(eval(cond, ctx))
- {
-
- }
- }
- template <typename Context, typename Cond, typename Cases>
- result_type
- evaluate(
- Context & ctx
- , Cond const & cond
- , Cases const & cases
- , mpl::int_<0> size
- , mpl::true_
- ) const
- {
-
- mpl::int_<0>
- idx0;
- switch(eval(cond, ctx))
- {
-
- default:
- eval(
- proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx0
- , size
- )
- )
- , ctx
- );
- }
- }
-
-
-
-
-
-
-
- template <typename Context, typename Cond, typename Cases>
- result_type
- evaluate(
- Context & ctx
- , Cond const & cond
- , Cases const & cases
- , mpl::int_<1> size
- , mpl::false_
- ) const
- {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<1> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0;
- switch(eval(cond, ctx))
- {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break;
- }
- }
- template <typename Context, typename Cond, typename Cases>
- result_type
- evaluate(
- Context & ctx
- , Cond const & cond
- , Cases const & cases
- , mpl::int_<1> size
- , mpl::true_
- ) const
- {
-
- mpl::int_<0>
- idx0;
- switch(eval(cond, ctx))
- {
-
- default:
- eval(
- proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx0
- , size
- )
- )
- , ctx
- );
- }
- }
     
     
     
@@ -127,10 +22,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<2> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<2> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -143,19 +45,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<2> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0;
- mpl::int_<1>
- idx1;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx1
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 1
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -179,10 +86,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<3> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<3> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<3> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -195,19 +109,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<3> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<3> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1;
- mpl::int_<2>
- idx2;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx2
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 2
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -231,10 +150,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<4> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<4> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<4> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<4> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -247,19 +173,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<4> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<4> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<4> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2;
- mpl::int_<3>
- idx3;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx3
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 3
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -283,10 +214,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<5> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<5> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<5> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<5> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<5> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -299,19 +237,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<5> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<5> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<5> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<5> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3;
- mpl::int_<4>
- idx4;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx4
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 4
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -335,10 +278,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<6> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<6> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<6> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<6> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<6> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<6> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -351,19 +301,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<6> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<6> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<6> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<6> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<6> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4;
- mpl::int_<5>
- idx5;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx5
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 5
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -387,10 +342,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<7> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<7> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<7> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<7> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<7> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<7> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<7> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -403,19 +365,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<7> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<7> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<7> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<7> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<7> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<7> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5;
- mpl::int_<6>
- idx6;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx6
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 6
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -439,10 +406,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<8> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<8> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<8> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<8> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<8> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<8> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<8> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<8> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -455,19 +429,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<8> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<8> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<8> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<8> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<8> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<8> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<8> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6;
- mpl::int_<7>
- idx7;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx7
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 7
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -491,10 +470,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<9> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<9> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<9> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<9> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<9> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<9> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<9> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<9> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< detail::sw
itch_grammar( Cases , mpl::int_<8> , mpl::int_<9> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -507,19 +493,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<9> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<9> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<9> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<9> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<9> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<9> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<9> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<9> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7;
- mpl::int_<8>
- idx8;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx8
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 8
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -543,10 +534,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<10> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<10> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<10> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<10> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<10> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<10> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<10> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<10> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<10> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<10> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -559,19 +557,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<10> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<10> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<10> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<10> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<10> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<10> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<10> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<10> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<10> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8;
- mpl::int_<9>
- idx9;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx9
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 9
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -595,10 +598,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<11> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<11> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<11> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<11> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<11> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<11> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<11> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<11> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<11> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<11> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<11> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -611,19 +621,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<11> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<11> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<11> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<11> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<11> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<11> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<11> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<11> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<11> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<11> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9;
- mpl::int_<10>
- idx10;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx10
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 10
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -647,10 +662,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<12> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<12> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<12> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<12> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<12> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<12> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<12> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<12> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<12> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<12> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<12> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<12> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -663,19 +685,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<12> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<12> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<12> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<12> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<12> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<12> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<12> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<12> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<12> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<12> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<12> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10;
- mpl::int_<11>
- idx11;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx11
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 11
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -699,10 +726,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<13> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<13> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<13> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<13> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<13> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<13> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<13> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<13> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<13> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<13> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<13> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<13> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<13> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -715,19 +749,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<13> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<13> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<13> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<13> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<13> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<13> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<13> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<13> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<13> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<13> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<13> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<13> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11;
- mpl::int_<12>
- idx12;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx12
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 12
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -751,10 +790,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<14> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<14> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<14> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<14> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<14> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<14> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<14> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<14> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<14> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<14> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<14> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<14> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<14> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<14> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -767,19 +813,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<14> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<14> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<14> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<14> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<14> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<14> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<14> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<14> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<14> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<14> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<14> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<14> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<14> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12;
- mpl::int_<13>
- idx13;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx13
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 13
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -803,10 +854,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<15> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<15> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<15> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<15> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<15> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<15> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<15> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<15> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<15> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<15> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<15> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<15> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<15> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<15> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<15> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -819,19 +877,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<15> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<15> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<15> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<15> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<15> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<15> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<15> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<15> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<15> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<15> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<15> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<15> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<15> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<15> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13;
- mpl::int_<14>
- idx14;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx14
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 14
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -855,10 +918,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<16> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<16> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<16> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<16> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<16> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<16> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<16> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<16> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<16> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<16> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<16> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<16> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<16> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<16> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<16> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<16> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -871,19 +941,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<16> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<16> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<16> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<16> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<16> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<16> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<16> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<16> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<16> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<16> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<16> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<16> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<16> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<16> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<16> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14;
- mpl::int_<15>
- idx15;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx15
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 15
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -907,10 +982,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<17> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<17> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<17> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<17> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<17> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<17> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<17> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<17> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<17> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<17> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<17> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<17> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<17> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<17> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<17> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<17> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<17> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -923,19 +1005,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<17> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<17> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<17> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<17> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<17> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<17> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<17> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<17> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<17> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<17> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<17> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<17> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<17> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<17> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<17> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<17> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15;
- mpl::int_<16>
- idx16;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx16
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 16
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -959,10 +1046,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<18> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<18> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<18> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<18> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<18> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<18> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<18> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<18> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<18> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<18> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<18> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<18> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<18> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<18> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<18> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<18> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<18> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<18> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -975,19 +1069,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<18> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<18> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<18> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<18> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<18> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<18> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<18> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<18> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<18> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<18> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<18> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<18> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<18> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<18> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<18> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<18> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<18> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16;
- mpl::int_<17>
- idx17;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx17
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 17
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1011,10 +1110,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<19> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<19> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<19> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<19> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<19> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<19> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<19> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<19> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<19> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<19> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<19> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<19> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<19> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<19> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<19> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<19> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<19> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<19> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<19> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1027,19 +1133,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<19> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<19> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<19> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<19> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<19> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<19> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<19> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<19> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<19> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<19> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<19> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<19> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<19> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<19> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<19> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<19> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<19> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<19> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17;
- mpl::int_<18>
- idx18;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx18
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 18
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1063,10 +1174,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<20> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<20> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<20> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<20> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<20> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<20> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<20> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<20> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<20> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<20> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<20> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<20> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<20> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<20> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<20> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<20> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<20> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<20> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<20> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<20> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1079,19 +1197,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<20> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<20> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<20> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<20> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<20> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<20> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<20> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<20> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<20> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<20> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<20> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<20> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<20> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<20> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<20> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<20> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<20> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<20> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<20> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18;
- mpl::int_<19>
- idx19;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx19
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 19
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1115,10 +1238,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<21> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<21> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<21> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<21> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<21> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<21> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<21> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<21> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<21> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<21> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<21> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<21> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<21> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<21> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<21> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<21> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<21> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<21> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<21> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<21> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<21> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1131,19 +1261,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<21> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<21> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<21> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<21> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<21> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<21> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<21> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<21> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<21> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<21> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<21> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<21> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<21> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<21> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<21> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<21> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<21> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<21> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<21> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<21> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19;
- mpl::int_<20>
- idx20;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx20
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 20
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1167,10 +1302,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<22> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<22> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<22> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<22> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<22> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<22> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<22> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<22> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<22> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<22> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<22> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<22> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<22> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<22> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<22> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<22> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<22> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<22> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<22> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<22> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<22> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<22> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1183,19 +1325,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<22> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<22> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<22> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<22> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<22> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<22> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<22> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<22> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<22> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<22> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<22> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<22> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<22> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<22> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<22> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<22> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<22> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<22> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<22> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<22> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<22> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20;
- mpl::int_<21>
- idx21;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx21
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 21
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1219,10 +1366,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<23> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<23> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<23> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<23> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<23> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<23> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<23> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<23> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<23> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<23> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<23> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<23> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<23> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<23> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<23> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<23> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<23> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<23> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<23> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<23> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<23> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<23> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<23> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1235,19 +1389,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<23> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<23> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<23> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<23> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<23> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<23> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<23> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<23> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<23> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<23> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<23> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<23> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<23> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<23> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<23> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<23> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<23> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<23> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<23> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<23> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<23> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<23> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21;
- mpl::int_<22>
- idx22;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx22
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 22
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1271,10 +1430,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<24> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<24> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<24> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<24> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<24> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<24> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<24> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<24> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<24> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<24> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<24> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<24> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<24> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<24> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<24> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<24> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<24> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<24> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<24> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<24> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<24> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<24> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<24> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<24> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1287,19 +1453,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<24> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<24> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<24> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<24> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<24> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<24> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<24> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<24> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<24> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<24> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<24> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<24> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<24> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<24> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<24> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<24> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<24> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<24> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<24> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<24> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<24> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<24> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<24> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22;
- mpl::int_<23>
- idx23;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx23
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 23
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1323,10 +1494,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<25> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<25> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<25> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<25> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<25> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<25> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<25> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<25> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<25> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<25> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<25> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<25> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<25> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<25> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<25> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<25> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<25> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<25> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<25> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<25> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<25> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<25> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<25> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<25> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<25> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1339,19 +1517,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<25> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<25> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<25> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<25> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<25> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<25> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<25> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<25> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<25> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<25> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<25> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<25> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<25> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<25> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<25> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<25> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<25> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<25> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<25> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<25> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<25> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<25> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<25> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<25> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23;
- mpl::int_<24>
- idx24;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx24
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 24
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1375,10 +1558,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<26> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<26> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<26> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<26> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<26> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<26> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<26> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<26> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<26> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<26> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<26> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<26> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<26> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<26> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<26> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<26> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<26> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<26> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<26> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<26> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<26> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<26> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<26> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<26> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<26> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<26> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1391,19 +1581,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<26> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<26> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<26> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<26> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<26> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<26> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<26> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<26> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<26> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<26> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<26> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<26> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<26> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<26> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<26> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<26> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<26> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<26> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<26> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<26> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<26> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<26> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<26> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<26> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<26> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24;
- mpl::int_<25>
- idx25;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx25
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 25
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1427,10 +1622,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<27> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<27> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<27> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<27> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<27> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<27> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<27> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<27> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<27> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<27> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<27> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<27> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<27> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<27> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<27> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<27> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<27> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<27> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<27> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<27> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<27> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<27> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<27> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<27> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<27> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<27> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<27> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1443,19 +1645,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<27> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<27> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<27> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<27> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<27> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<27> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<27> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<27> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<27> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<27> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<27> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<27> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<27> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<27> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<27> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<27> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<27> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<27> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<27> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<27> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<27> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<27> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<27> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<27> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<27> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<27> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25;
- mpl::int_<26>
- idx26;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx26
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 26
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1479,10 +1686,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<28> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<28> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<28> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<28> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<28> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<28> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<28> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<28> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<28> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<28> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<28> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<28> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<28> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<28> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<28> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<28> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<28> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<28> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<28> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<28> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<28> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<28> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<28> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<28> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<28> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<28> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<28> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<28> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1495,19 +1709,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<28> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<28> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<28> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<28> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<28> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<28> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<28> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<28> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<28> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<28> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<28> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<28> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<28> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<28> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<28> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<28> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<28> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<28> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<28> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<28> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<28> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<28> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<28> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<28> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<28> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<28> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<28> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26;
- mpl::int_<27>
- idx27;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx27
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 27
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1531,10 +1750,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<29> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<29> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<29> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<29> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<29> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<29> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<29> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<29> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<29> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<29> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<29> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<29> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<29> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<29> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<29> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<29> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<29> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<29> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<29> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<29> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<29> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<29> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<29> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<29> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<29> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<29> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<29> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<29> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<29> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1547,19 +1773,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<29> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<29> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<29> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<29> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<29> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<29> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<29> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<29> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<29> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<29> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<29> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<29> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<29> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<29> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<29> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<29> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<29> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<29> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<29> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<29> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<29> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<29> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<29> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<29> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<29> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<29> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<29> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<29> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27;
- mpl::int_<28>
- idx28;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx28
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 28
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1583,10 +1814,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<30> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<30> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<30> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<30> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<30> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<30> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<30> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<30> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<30> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<30> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<30> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<30> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<30> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<30> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<30> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<30> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<30> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<30> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<30> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<30> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<30> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<30> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<30> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<30> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<30> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<30> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<30> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<30> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<30> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<30> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1599,19 +1837,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<30> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<30> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<30> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<30> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<30> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<30> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<30> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<30> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<30> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<30> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<30> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<30> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<30> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<30> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<30> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<30> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<30> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<30> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<30> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<30> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<30> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<30> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<30> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<30> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<30> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<30> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<30> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<30> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<30> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28;
- mpl::int_<29>
- idx29;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx29
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 29
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1635,10 +1878,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<31> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<31> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<31> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<31> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<31> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<31> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<31> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<31> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<31> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<31> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<31> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<31> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<31> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<31> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<31> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<31> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<31> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<31> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<31> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<31> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<31> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<31> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<31> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<31> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<31> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<31> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<31> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<31> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<31> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<31> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<31> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1651,19 +1901,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<31> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<31> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<31> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<31> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<31> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<31> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<31> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<31> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<31> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<31> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<31> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<31> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<31> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<31> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<31> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<31> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<31> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<31> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<31> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<31> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<31> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<31> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<31> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<31> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<31> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<31> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<31> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<31> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<31> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<31> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29;
- mpl::int_<30>
- idx30;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx30
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 30
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1687,10 +1942,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<32> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<32> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<32> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<32> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<32> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<32> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<32> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<32> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<32> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<32> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<32> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<32> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<32> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<32> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<32> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<32> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<32> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<32> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<32> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<32> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<32> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<32> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<32> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<32> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<32> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<32> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<32> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<32> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<32> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<32> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<32> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<32> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1703,19 +1965,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<32> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<32> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<32> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<32> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<32> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<32> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<32> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<32> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<32> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<32> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<32> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<32> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<32> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<32> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<32> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<32> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<32> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<32> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<32> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<32> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<32> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<32> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<32> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<32> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<32> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<32> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<32> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<32> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<32> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<32> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<32> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30;
- mpl::int_<31>
- idx31;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx31
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 31
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1739,10 +2006,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<33> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<33> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<33> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<33> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<33> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<33> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<33> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<33> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<33> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<33> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<33> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<33> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<33> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<33> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<33> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<33> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<33> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<33> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<33> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<33> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<33> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<33> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<33> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<33> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<33> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<33> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<33> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<33> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<33> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<33> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<33> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<33> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<33> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1755,19 +2029,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<33> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<33> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<33> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<33> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<33> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<33> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<33> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<33> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<33> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<33> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<33> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<33> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<33> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<33> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<33> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<33> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<33> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<33> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<33> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<33> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<33> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<33> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<33> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<33> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<33> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<33> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<33> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<33> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<33> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<33> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<33> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<33> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31;
- mpl::int_<32>
- idx32;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx32
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 32
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1791,10 +2070,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<34> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<34> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<34> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<34> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<34> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<34> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<34> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<34> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<34> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<34> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<34> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<34> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<34> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<34> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<34> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<34> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<34> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<34> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<34> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<34> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<34> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<34> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<34> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<34> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<34> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<34> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<34> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<34> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<34> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<34> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<34> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<34> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<34> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<34> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1807,19 +2093,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<34> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<34> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<34> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<34> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<34> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<34> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<34> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<34> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<34> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<34> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<34> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<34> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<34> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<34> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<34> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<34> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<34> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<34> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<34> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<34> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<34> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<34> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<34> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<34> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<34> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<34> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<34> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<34> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<34> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<34> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<34> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<34> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<34> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32;
- mpl::int_<33>
- idx33;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx33
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 33
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1843,10 +2134,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<35> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<35> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<35> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<35> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<35> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<35> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<35> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<35> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<35> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<35> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<35> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<35> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<35> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<35> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<35> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<35> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<35> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<35> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<35> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<35> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<35> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<35> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<35> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<35> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<35> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<35> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<35> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<35> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<35> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<35> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<35> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<35> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<35> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<35> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<35> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1859,19 +2157,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<35> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<35> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<35> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<35> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<35> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<35> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<35> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<35> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<35> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<35> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<35> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<35> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<35> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<35> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<35> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<35> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<35> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<35> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<35> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<35> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<35> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<35> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<35> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<35> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<35> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<35> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<35> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<35> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<35> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<35> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<35> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<35> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<35> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<35> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33;
- mpl::int_<34>
- idx34;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx34
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 34
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1895,10 +2198,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<36> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<36> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<36> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<36> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<36> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<36> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<36> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<36> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<36> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<36> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<36> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<36> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<36> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<36> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<36> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<36> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<36> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<36> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<36> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<36> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<36> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<36> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<36> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<36> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<36> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<36> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<36> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<36> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<36> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<36> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<36> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<36> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<36> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<36> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<36> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<36> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1911,19 +2221,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<36> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<36> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<36> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<36> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<36> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<36> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<36> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<36> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<36> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<36> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<36> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<36> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<36> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<36> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<36> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<36> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<36> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<36> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<36> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<36> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<36> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<36> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<36> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<36> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<36> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<36> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<36> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<36> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<36> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<36> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<36> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<36> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<36> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<36> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<36> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34;
- mpl::int_<35>
- idx35;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx35
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 35
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1947,10 +2262,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<37> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<37> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<37> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<37> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<37> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<37> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<37> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<37> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<37> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<37> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<37> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<37> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<37> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<37> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<37> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<37> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<37> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<37> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<37> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<37> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<37> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<37> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<37> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<37> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<37> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<37> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<37> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<37> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<37> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<37> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<37> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<37> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<37> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<37> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<37> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<37> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<37> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1963,19 +2285,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<37> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<37> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<37> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<37> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<37> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<37> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<37> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<37> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<37> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<37> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<37> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<37> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<37> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<37> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<37> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<37> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<37> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<37> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<37> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<37> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<37> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<37> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<37> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<37> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<37> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<37> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<37> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<37> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<37> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<37> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<37> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<37> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<37> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<37> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<37> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<37> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35;
- mpl::int_<36>
- idx36;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx36
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 36
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1999,10 +2326,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<38> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<38> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<38> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<38> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<38> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<38> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<38> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<38> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<38> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<38> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<38> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<38> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<38> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<38> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<38> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<38> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<38> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<38> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<38> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<38> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<38> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<38> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<38> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<38> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<38> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<38> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<38> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<38> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<38> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<38> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<38> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<38> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<38> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<38> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<38> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<38> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<38> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<38> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -2015,19 +2349,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<38> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<38> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<38> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<38> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<38> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<38> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<38> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<38> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<38> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<38> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<38> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<38> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<38> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<38> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<38> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<38> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<38> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<38> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<38> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<38> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<38> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<38> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<38> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<38> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<38> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<38> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<38> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<38> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<38> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<38> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<38> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<38> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<38> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<38> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<38> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<38> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<38> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36;
- mpl::int_<37>
- idx37;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx37
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 37
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -2051,10 +2390,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<39> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<39> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<39> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<39> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<39> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<39> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<39> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<39> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<39> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<39> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<39> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<39> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<39> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<39> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<39> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<39> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<39> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<39> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<39> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<39> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<39> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<39> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<39> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<39> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<39> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<39> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<39> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<39> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<39> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<39> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<39> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<39> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<39> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<39> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<39> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<39> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<39> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<39> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<39> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -2067,19 +2413,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<39> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<39> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<39> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<39> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<39> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<39> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<39> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<39> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<39> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<39> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<39> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<39> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<39> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<39> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<39> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<39> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<39> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<39> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<39> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<39> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<39> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<39> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<39> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<39> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<39> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<39> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<39> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<39> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<39> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<39> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<39> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<39> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<39> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<39> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<39> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<39> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<39> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<39> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37;
- mpl::int_<38>
- idx38;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx38
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 38
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -2103,10 +2454,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<40> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<40> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<40> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<40> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<40> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<40> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<40> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<40> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<40> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<40> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<40> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<40> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<40> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<40> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<40> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<40> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<40> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<40> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<40> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<40> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<40> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<40> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<40> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<40> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<40> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<40> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<40> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<40> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<40> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<40> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<40> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<40> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<40> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<40> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<40> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<40> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<40> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<40> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<40> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<40> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -2119,19 +2477,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<40> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<40> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<40> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<40> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<40> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<40> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<40> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<40> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<40> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<40> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<40> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<40> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<40> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<40> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<40> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<40> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<40> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<40> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<40> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<40> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<40> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<40> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<40> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<40> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<40> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<40> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<40> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<40> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<40> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<40> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<40> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<40> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<40> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<40> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<40> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<40> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<40> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<40> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<40> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38;
- mpl::int_<39>
- idx39;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx39
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 39
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_50.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_50.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/switch_50.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,111 +5,6 @@
     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 Context, typename Cond, typename Cases>
- result_type
- evaluate(
- Context & ctx
- , Cond const & cond
- , Cases const & cases
- , mpl::int_<0> size
- , mpl::false_
- ) const
- {
-
- switch(eval(cond, ctx))
- {
-
- }
- }
- template <typename Context, typename Cond, typename Cases>
- result_type
- evaluate(
- Context & ctx
- , Cond const & cond
- , Cases const & cases
- , mpl::int_<0> size
- , mpl::true_
- ) const
- {
-
- mpl::int_<0>
- idx0;
- switch(eval(cond, ctx))
- {
-
- default:
- eval(
- proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx0
- , size
- )
- )
- , ctx
- );
- }
- }
-
-
-
-
-
-
-
- template <typename Context, typename Cond, typename Cases>
- result_type
- evaluate(
- Context & ctx
- , Cond const & cond
- , Cases const & cases
- , mpl::int_<1> size
- , mpl::false_
- ) const
- {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<1> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0;
- switch(eval(cond, ctx))
- {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break;
- }
- }
- template <typename Context, typename Cond, typename Cases>
- result_type
- evaluate(
- Context & ctx
- , Cond const & cond
- , Cases const & cases
- , mpl::int_<1> size
- , mpl::true_
- ) const
- {
-
- mpl::int_<0>
- idx0;
- switch(eval(cond, ctx))
- {
-
- default:
- eval(
- proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx0
- , size
- )
- )
- , ctx
- );
- }
- }
     
     
     
@@ -127,10 +22,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<2> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<2> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -143,19 +45,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<2> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0;
- mpl::int_<1>
- idx1;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx1
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 1
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -179,10 +86,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<3> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<3> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<3> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -195,19 +109,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<3> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<3> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1;
- mpl::int_<2>
- idx2;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx2
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 2
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -231,10 +150,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<4> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<4> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<4> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<4> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -247,19 +173,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<4> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<4> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<4> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2;
- mpl::int_<3>
- idx3;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx3
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 3
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -283,10 +214,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<5> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<5> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<5> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<5> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<5> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -299,19 +237,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<5> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<5> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<5> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<5> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3;
- mpl::int_<4>
- idx4;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx4
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 4
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -335,10 +278,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<6> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<6> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<6> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<6> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<6> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<6> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -351,19 +301,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<6> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<6> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<6> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<6> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<6> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4;
- mpl::int_<5>
- idx5;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx5
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 5
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -387,10 +342,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<7> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<7> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<7> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<7> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<7> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<7> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<7> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -403,19 +365,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<7> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<7> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<7> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<7> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<7> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<7> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5;
- mpl::int_<6>
- idx6;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx6
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 6
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -439,10 +406,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<8> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<8> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<8> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<8> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<8> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<8> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<8> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<8> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -455,19 +429,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<8> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<8> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<8> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<8> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<8> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<8> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<8> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6;
- mpl::int_<7>
- idx7;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx7
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 7
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -491,10 +470,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<9> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<9> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<9> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<9> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<9> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<9> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<9> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<9> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< detail::sw
itch_grammar( Cases , mpl::int_<8> , mpl::int_<9> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -507,19 +493,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<9> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<9> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<9> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<9> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef typena
me boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<9> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<9> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<9> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<9> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7;
- mpl::int_<8>
- idx8;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx8
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 8
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -543,10 +534,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<10> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<10> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<10> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<10> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<10> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<10> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<10> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<10> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<10> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<10> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -559,19 +557,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<10> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<10> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<10> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<10> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<10> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<10> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<10> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<10> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<10> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8;
- mpl::int_<9>
- idx9;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx9
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 9
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -595,10 +598,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<11> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<11> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<11> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<11> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<11> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<11> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<11> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<11> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<11> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<11> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<11> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -611,19 +621,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<11> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<11> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<11> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<11> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<11> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<11> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<11> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<11> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<11> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<11> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9;
- mpl::int_<10>
- idx10;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx10
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 10
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -647,10 +662,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<12> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<12> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<12> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<12> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<12> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<12> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<12> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<12> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<12> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<12> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<12> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<12> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -663,19 +685,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<12> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<12> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<12> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<12> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<12> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<12> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<12> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<12> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<12> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<12> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<12> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10;
- mpl::int_<11>
- idx11;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx11
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 11
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -699,10 +726,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<13> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<13> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<13> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<13> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<13> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<13> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<13> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<13> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<13> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<13> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<13> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<13> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<13> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -715,19 +749,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<13> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<13> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<13> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<13> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<13> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<13> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<13> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<13> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<13> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<13> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<13> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<13> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11;
- mpl::int_<12>
- idx12;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx12
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 12
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -751,10 +790,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<14> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<14> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<14> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<14> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<14> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<14> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<14> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<14> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<14> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<14> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<14> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<14> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<14> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<14> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -767,19 +813,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<14> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<14> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<14> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<14> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<14> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<14> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<14> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<14> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<14> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<14> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<14> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<14> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<14> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12;
- mpl::int_<13>
- idx13;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx13
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 13
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -803,10 +854,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<15> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<15> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<15> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<15> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<15> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<15> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<15> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<15> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<15> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<15> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<15> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<15> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<15> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<15> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<15> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -819,19 +877,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<15> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<15> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<15> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<15> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<15> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<15> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<15> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<15> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<15> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<15> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<15> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<15> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<15> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<15> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13;
- mpl::int_<14>
- idx14;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx14
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 14
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -855,10 +918,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<16> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<16> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<16> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<16> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<16> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<16> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<16> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<16> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<16> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<16> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<16> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<16> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<16> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<16> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<16> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<16> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -871,19 +941,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<16> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<16> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<16> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<16> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<16> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<16> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<16> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<16> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<16> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<16> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<16> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<16> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<16> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<16> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<16> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14;
- mpl::int_<15>
- idx15;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx15
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 15
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -907,10 +982,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<17> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<17> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<17> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<17> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<17> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<17> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<17> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<17> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<17> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<17> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<17> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<17> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<17> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<17> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<17> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<17> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<17> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -923,19 +1005,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<17> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<17> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<17> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<17> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<17> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<17> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<17> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<17> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<17> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<17> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<17> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<17> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<17> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<17> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<17> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<17> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15;
- mpl::int_<16>
- idx16;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx16
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 16
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -959,10 +1046,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<18> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<18> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<18> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<18> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<18> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<18> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<18> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<18> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<18> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<18> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<18> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<18> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<18> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<18> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<18> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<18> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<18> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<18> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -975,19 +1069,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<18> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<18> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<18> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<18> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<18> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<18> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<18> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<18> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<18> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<18> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<18> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<18> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<18> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<18> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<18> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<18> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<18> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16;
- mpl::int_<17>
- idx17;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx17
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 17
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1011,10 +1110,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<19> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<19> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<19> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<19> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<19> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<19> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<19> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<19> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<19> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<19> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<19> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<19> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<19> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<19> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<19> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<19> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<19> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<19> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<19> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1027,19 +1133,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<19> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<19> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<19> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<19> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<19> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<19> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<19> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<19> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<19> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<19> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<19> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<19> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<19> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<19> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<19> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<19> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<19> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<19> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17;
- mpl::int_<18>
- idx18;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx18
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 18
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1063,10 +1174,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<20> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<20> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<20> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<20> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<20> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<20> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<20> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<20> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<20> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<20> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<20> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<20> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<20> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<20> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<20> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<20> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<20> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<20> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<20> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<20> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1079,19 +1197,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<20> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<20> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<20> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<20> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<20> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<20> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<20> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<20> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<20> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<20> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<20> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<20> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<20> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<20> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<20> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<20> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<20> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<20> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<20> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18;
- mpl::int_<19>
- idx19;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx19
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 19
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1115,10 +1238,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<21> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<21> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<21> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<21> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<21> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<21> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<21> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<21> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<21> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<21> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<21> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<21> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<21> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<21> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<21> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<21> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<21> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<21> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<21> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<21> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<21> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1131,19 +1261,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<21> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<21> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<21> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<21> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<21> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<21> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<21> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<21> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<21> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<21> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<21> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<21> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<21> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<21> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<21> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<21> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<21> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<21> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<21> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<21> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19;
- mpl::int_<20>
- idx20;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx20
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 20
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1167,10 +1302,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<22> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<22> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<22> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<22> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<22> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<22> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<22> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<22> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<22> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<22> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<22> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<22> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<22> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<22> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<22> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<22> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<22> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<22> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<22> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<22> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<22> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<22> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1183,19 +1325,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<22> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<22> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<22> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<22> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<22> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<22> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<22> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<22> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<22> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<22> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<22> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<22> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<22> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<22> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<22> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<22> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<22> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<22> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<22> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<22> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<22> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20;
- mpl::int_<21>
- idx21;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx21
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 21
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1219,10 +1366,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<23> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<23> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<23> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<23> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<23> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<23> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<23> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<23> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<23> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<23> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<23> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<23> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<23> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<23> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<23> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<23> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<23> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<23> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<23> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<23> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<23> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<23> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<23> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1235,19 +1389,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<23> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<23> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<23> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<23> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<23> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<23> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<23> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<23> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<23> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<23> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<23> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<23> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<23> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<23> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<23> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<23> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<23> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<23> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<23> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<23> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<23> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<23> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21;
- mpl::int_<22>
- idx22;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx22
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 22
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1271,10 +1430,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<24> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<24> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<24> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<24> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<24> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<24> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<24> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<24> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<24> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<24> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<24> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<24> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<24> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<24> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<24> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<24> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<24> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<24> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<24> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<24> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<24> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<24> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<24> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<24> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1287,19 +1453,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<24> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<24> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<24> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<24> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<24> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<24> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<24> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<24> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<24> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<24> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<24> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<24> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<24> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<24> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<24> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<24> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<24> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<24> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<24> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<24> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<24> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<24> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<24> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22;
- mpl::int_<23>
- idx23;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx23
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 23
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1323,10 +1494,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<25> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<25> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<25> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<25> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<25> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<25> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<25> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<25> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<25> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<25> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<25> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<25> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<25> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<25> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<25> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<25> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<25> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<25> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<25> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<25> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<25> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<25> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<25> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<25> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<25> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1339,19 +1517,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<25> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<25> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<25> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<25> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<25> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<25> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<25> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<25> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<25> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<25> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<25> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<25> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<25> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<25> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<25> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<25> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<25> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<25> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<25> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<25> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<25> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<25> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<25> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<25> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23;
- mpl::int_<24>
- idx24;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx24
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 24
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1375,10 +1558,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<26> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<26> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<26> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<26> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<26> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<26> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<26> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<26> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<26> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<26> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<26> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<26> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<26> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<26> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<26> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<26> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<26> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<26> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<26> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<26> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<26> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<26> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<26> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<26> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<26> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<26> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1391,19 +1581,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<26> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<26> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<26> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<26> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<26> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<26> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<26> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<26> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<26> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<26> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<26> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<26> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<26> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<26> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<26> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<26> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<26> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<26> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<26> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<26> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<26> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<26> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<26> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<26> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<26> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24;
- mpl::int_<25>
- idx25;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx25
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 25
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1427,10 +1622,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<27> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<27> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<27> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<27> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<27> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<27> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<27> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<27> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<27> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<27> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<27> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<27> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<27> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<27> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<27> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<27> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<27> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<27> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<27> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<27> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<27> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<27> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<27> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<27> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<27> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<27> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<27> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1443,19 +1645,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<27> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<27> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<27> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<27> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<27> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<27> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<27> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<27> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<27> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<27> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<27> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<27> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<27> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<27> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<27> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<27> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<27> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<27> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<27> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<27> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<27> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<27> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<27> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<27> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<27> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<27> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25;
- mpl::int_<26>
- idx26;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx26
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 26
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1479,10 +1686,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<28> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<28> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<28> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<28> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<28> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<28> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<28> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<28> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<28> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<28> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<28> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<28> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<28> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<28> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<28> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<28> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<28> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<28> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<28> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<28> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<28> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<28> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<28> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<28> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<28> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<28> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<28> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<28> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1495,19 +1709,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<28> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<28> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<28> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<28> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<28> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<28> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<28> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<28> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<28> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<28> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<28> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<28> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<28> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<28> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<28> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<28> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<28> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<28> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<28> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<28> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<28> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<28> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<28> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<28> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<28> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<28> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<28> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26;
- mpl::int_<27>
- idx27;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx27
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 27
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1531,10 +1750,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<29> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<29> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<29> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<29> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<29> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<29> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<29> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<29> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<29> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<29> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<29> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<29> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<29> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<29> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<29> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<29> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<29> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<29> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<29> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<29> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<29> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<29> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<29> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<29> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<29> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<29> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<29> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<29> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<29> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1547,19 +1773,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<29> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<29> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<29> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<29> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<29> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<29> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<29> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<29> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<29> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<29> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<29> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<29> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<29> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<29> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<29> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<29> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<29> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<29> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<29> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<29> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<29> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<29> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<29> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<29> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<29> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<29> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<29> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<29> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27;
- mpl::int_<28>
- idx28;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx28
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 28
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1583,10 +1814,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<30> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<30> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<30> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<30> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<30> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<30> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<30> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<30> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<30> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<30> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<30> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<30> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<30> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<30> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<30> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<30> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<30> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<30> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<30> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<30> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<30> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<30> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<30> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<30> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<30> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<30> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<30> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<30> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<30> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<30> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1599,19 +1837,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<30> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<30> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<30> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<30> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<30> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<30> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<30> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<30> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<30> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<30> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<30> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<30> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<30> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<30> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<30> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<30> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<30> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<30> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<30> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<30> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<30> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<30> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<30> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<30> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<30> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<30> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<30> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<30> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<30> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28;
- mpl::int_<29>
- idx29;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx29
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 29
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1635,10 +1878,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<31> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<31> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<31> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<31> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<31> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<31> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<31> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<31> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<31> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<31> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<31> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<31> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<31> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<31> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<31> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<31> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<31> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<31> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<31> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<31> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<31> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<31> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<31> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<31> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<31> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<31> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<31> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<31> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<31> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<31> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<31> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1651,19 +1901,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<31> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<31> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<31> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<31> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<31> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<31> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<31> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<31> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<31> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<31> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<31> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<31> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<31> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<31> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<31> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<31> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<31> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<31> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<31> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<31> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<31> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<31> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<31> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<31> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<31> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<31> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<31> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<31> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<31> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<31> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29;
- mpl::int_<30>
- idx30;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx30
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 30
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1687,10 +1942,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<32> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<32> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<32> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<32> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<32> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<32> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<32> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<32> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<32> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<32> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<32> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<32> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<32> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<32> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<32> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<32> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<32> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<32> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<32> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<32> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<32> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<32> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<32> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<32> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<32> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<32> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<32> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<32> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<32> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<32> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<32> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<32> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1703,19 +1965,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<32> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<32> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<32> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<32> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<32> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<32> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<32> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<32> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<32> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<32> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<32> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<32> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<32> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<32> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<32> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<32> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<32> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<32> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<32> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<32> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<32> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<32> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<32> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<32> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<32> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<32> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<32> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<32> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<32> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<32> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<32> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30;
- mpl::int_<31>
- idx31;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx31
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 31
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1739,10 +2006,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<33> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<33> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<33> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<33> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<33> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<33> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<33> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<33> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<33> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<33> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<33> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<33> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<33> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<33> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<33> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<33> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<33> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<33> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<33> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<33> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<33> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<33> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<33> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<33> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<33> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<33> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<33> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<33> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<33> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<33> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<33> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<33> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<33> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1755,19 +2029,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<33> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<33> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<33> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<33> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<33> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<33> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<33> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<33> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<33> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<33> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<33> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<33> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<33> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<33> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<33> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<33> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<33> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<33> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<33> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<33> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<33> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<33> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<33> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<33> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<33> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<33> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<33> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<33> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<33> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<33> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<33> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<33> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31;
- mpl::int_<32>
- idx32;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx32
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 32
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1791,10 +2070,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<34> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<34> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<34> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<34> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<34> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<34> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<34> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<34> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<34> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<34> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<34> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<34> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<34> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<34> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<34> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<34> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<34> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<34> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<34> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<34> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<34> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<34> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<34> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<34> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<34> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<34> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<34> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<34> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<34> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<34> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<34> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<34> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<34> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<34> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1807,19 +2093,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<34> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<34> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<34> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<34> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<34> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<34> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<34> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<34> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<34> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<34> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<34> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<34> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<34> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<34> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<34> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<34> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<34> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<34> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<34> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<34> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<34> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<34> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<34> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<34> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<34> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<34> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<34> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<34> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<34> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<34> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<34> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<34> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<34> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32;
- mpl::int_<33>
- idx33;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx33
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 33
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1843,10 +2134,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<35> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<35> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<35> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<35> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<35> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<35> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<35> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<35> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<35> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<35> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<35> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<35> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<35> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<35> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<35> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<35> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<35> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<35> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<35> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<35> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<35> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<35> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<35> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<35> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<35> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<35> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<35> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<35> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<35> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<35> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<35> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<35> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<35> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<35> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<35> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1859,19 +2157,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<35> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<35> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<35> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<35> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<35> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<35> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<35> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<35> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<35> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<35> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<35> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<35> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<35> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<35> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<35> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<35> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<35> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<35> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<35> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<35> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<35> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<35> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<35> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<35> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<35> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<35> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<35> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<35> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<35> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<35> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<35> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<35> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<35> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<35> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33;
- mpl::int_<34>
- idx34;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx34
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 34
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1895,10 +2198,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<36> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<36> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<36> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<36> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<36> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<36> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<36> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<36> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<36> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<36> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<36> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<36> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<36> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<36> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<36> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<36> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<36> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<36> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<36> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<36> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<36> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<36> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<36> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<36> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<36> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<36> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<36> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<36> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<36> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<36> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<36> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<36> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<36> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<36> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<36> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<36> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1911,19 +2221,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<36> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<36> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<36> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<36> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<36> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<36> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<36> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<36> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<36> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<36> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<36> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<36> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<36> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<36> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<36> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<36> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<36> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<36> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<36> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<36> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<36> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<36> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<36> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<36> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<36> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<36> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<36> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<36> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<36> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<36> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<36> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<36> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<36> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<36> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<36> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34;
- mpl::int_<35>
- idx35;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx35
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 35
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1947,10 +2262,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<37> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<37> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<37> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<37> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<37> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<37> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<37> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<37> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<37> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<37> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<37> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<37> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<37> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<37> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<37> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<37> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<37> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<37> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<37> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<37> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<37> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<37> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<37> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<37> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<37> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<37> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<37> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<37> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<37> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<37> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<37> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<37> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<37> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<37> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<37> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<37> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<37> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -1963,19 +2285,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<37> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<37> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<37> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<37> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<37> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<37> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<37> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<37> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<37> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<37> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<37> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<37> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<37> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<37> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<37> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<37> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<37> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<37> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<37> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<37> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<37> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<37> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<37> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<37> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<37> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<37> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<37> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<37> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<37> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<37> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<37> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<37> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<37> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<37> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<37> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<37> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35;
- mpl::int_<36>
- idx36;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx36
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 36
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -1999,10 +2326,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<38> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<38> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<38> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<38> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<38> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<38> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<38> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<38> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<38> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<38> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<38> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<38> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<38> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<38> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<38> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<38> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<38> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<38> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<38> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<38> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<38> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<38> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<38> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<38> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<38> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<38> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<38> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<38> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<38> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<38> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<38> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<38> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<38> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<38> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<38> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<38> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<38> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<38> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -2015,19 +2349,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<38> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<38> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<38> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<38> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<38> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<38> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<38> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<38> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<38> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<38> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<38> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<38> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<38> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<38> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<38> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<38> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<38> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<38> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<38> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<38> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<38> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<38> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<38> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<38> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<38> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<38> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<38> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<38> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<38> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<38> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<38> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<38> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<38> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<38> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<38> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<38> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<38> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36;
- mpl::int_<37>
- idx37;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx37
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 37
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -2051,10 +2390,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<39> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<39> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<39> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<39> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<39> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<39> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<39> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<39> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<39> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<39> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<39> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<39> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<39> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<39> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<39> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<39> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<39> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<39> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<39> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<39> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<39> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<39> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<39> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<39> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<39> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<39> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<39> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<39> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<39> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<39> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<39> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<39> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<39> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<39> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<39> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<39> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<39> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<39> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<39> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -2067,19 +2413,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<39> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<39> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<39> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<39> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<39> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<39> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<39> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<39> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<39> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<39> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<39> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<39> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<39> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<39> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<39> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<39> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<39> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<39> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<39> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<39> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<39> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<39> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<39> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<39> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<39> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<39> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<39> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<39> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<39> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<39> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<39> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<39> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<39> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<39> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<39> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<39> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<39> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<39> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37;
- mpl::int_<38>
- idx38;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx38
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 38
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -2103,10 +2454,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<40> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<40> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<40> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<40> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<40> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<40> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<40> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<40> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<40> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<40> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<40> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<40> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<40> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<40> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<40> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<40> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<40> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<40> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<40> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<40> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<40> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<40> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<40> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<40> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<40> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<40> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<40> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<40> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<40> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<40> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<40> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<40> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<40> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<40> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<40> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<40> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<40> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<40> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<40> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<40> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -2119,19 +2477,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<40> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<40> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<40> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<40> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<40> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<40> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<40> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<40> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<40> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<40> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<40> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<40> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<40> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<40> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<40> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<40> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<40> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<40> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<40> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<40> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<40> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<40> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<40> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<40> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<40> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<40> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<40> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<40> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<40> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<40> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<40> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<40> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<40> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<40> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<40> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<40> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<40> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<40> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<40> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38;
- mpl::int_<39>
- idx39;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx39
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 39
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -2155,10 +2518,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<41> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<41> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<41> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<41> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<41> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<41> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<41> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<41> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<41> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<41> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<41> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<41> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<41> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<41> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<41> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<41> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<41> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<41> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<41> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<41> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<41> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<41> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<41> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<41> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<41> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<41> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<41> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<41> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<41> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<41> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<41> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<41> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<41> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<41> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<41> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<41> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<41> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<41> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<41> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<41> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<41> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 40 >::type >::type case40; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type >::type case_label40;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<40>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -2171,19 +2541,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<41> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<41> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<41> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<41> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<41> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<41> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<41> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<41> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<41> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<41> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<41> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<41> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<41> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<41> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<41> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<41> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<41> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<41> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<41> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<41> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<41> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<41> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<41> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<41> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<41> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<41> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<41> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<41> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<41> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<41> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<41> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<41> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<41> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<41> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<41> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<41> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<41> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<41> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<41> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<41> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39;
- mpl::int_<40>
- idx40;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx40
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 40
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -2207,10 +2582,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<42> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<42> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<42> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<42> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<42> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<42> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<42> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<42> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<42> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<42> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<42> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<42> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<42> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<42> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<42> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<42> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<42> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<42> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<42> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<42> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<42> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<42> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<42> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<42> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<42> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<42> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<42> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<42> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<42> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<42> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<42> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<42> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<42> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<42> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<42> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<42> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<42> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<42> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<42> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<42> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<42> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<42> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 40 >::type >::type case40; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type >::type case_label40; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 41 >::type >::type case41; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type >::type case_label41;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<40>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<41>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -2223,19 +2605,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<42> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<42> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<42> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<42> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<42> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<42> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<42> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<42> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<42> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<42> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<42> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<42> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<42> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<42> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<42> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<42> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<42> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<42> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<42> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<42> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<42> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<42> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<42> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<42> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<42> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<42> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<42> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<42> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<42> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<42> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<42> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<42> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<42> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<42> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<42> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<42> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<42> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<42> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<42> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<42> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<42> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40;
- mpl::int_<41>
- idx41;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 40 >::type >::type case40; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type >::type case_label40;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<40>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx41
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 41
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -2259,10 +2646,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<43> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<43> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<43> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<43> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<43> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<43> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<43> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<43> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<43> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<43> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<43> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<43> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<43> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<43> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<43> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<43> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<43> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<43> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<43> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<43> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<43> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<43> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<43> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<43> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<43> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<43> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<43> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<43> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<43> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<43> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<43> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<43> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<43> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<43> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<43> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<43> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<43> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<43> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<43> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<43> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<43> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<43> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<43> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 40 >::type >::type case40; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type >::type case_label40; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 41 >::type >::type case41; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type >::type case_label41; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 42 >::type >::type case42; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case42
, 0 >::type >::type >::type case_label42;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<40>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<41>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<42>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -2275,19 +2669,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<43> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<43> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<43> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<43> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<43> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<43> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<43> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<43> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<43> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<43> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<43> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<43> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<43> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<43> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<43> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<43> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<43> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<43> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<43> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<43> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<43> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<43> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<43> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<43> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<43> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<43> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<43> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<43> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<43> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<43> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<43> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<43> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<43> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<43> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<43> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<43> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<43> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<43> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<43> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<43> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<43> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<43> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41;
- mpl::int_<42>
- idx42;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 40 >::type >::type case40; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type >::type case_label40; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 41 >::type >::type case41; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type >::type case_label41;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<40>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<41>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx42
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 42
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -2311,10 +2710,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<44> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<44> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<44> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<44> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<44> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<44> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<44> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<44> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<44> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<44> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<44> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<44> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<44> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<44> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<44> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<44> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<44> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<44> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<44> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<44> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<44> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<44> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<44> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<44> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<44> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<44> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<44> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<44> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<44> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<44> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<44> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<44> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<44> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<44> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<44> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<44> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<44> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<44> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<44> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<44> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<44> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<44> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<44> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<44> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 40 >::type >::type case40; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type >::type case_label40; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 41 >::type >::type case41; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type >::type case_label41; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 42 >::type >::type case42; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case42
, 0 >::type >::type >::type case_label42; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 43 >::type >::type case43; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type >::type case_label43;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<40>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<41>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<42>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<43>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -2327,19 +2733,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<44> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<44> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<44> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<44> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<44> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<44> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<44> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<44> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<44> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<44> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<44> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<44> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<44> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<44> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<44> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<44> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<44> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<44> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<44> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<44> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<44> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<44> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<44> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<44> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<44> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<44> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<44> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<44> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<44> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<44> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<44> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<44> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<44> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<44> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<44> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<44> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<44> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<44> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<44> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<44> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<44> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<44> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<44> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42;
- mpl::int_<43>
- idx43;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 40 >::type >::type case40; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type >::type case_label40; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 41 >::type >::type case41; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type >::type case_label41; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 42 >::type >::type case42; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case42
, 0 >::type >::type >::type case_label42;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<40>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<41>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<42>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx43
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 43
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -2363,10 +2774,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<45> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<45> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<45> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<45> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<45> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<45> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<45> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<45> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<45> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<45> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<45> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<45> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<45> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<45> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<45> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<45> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<45> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<45> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<45> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<45> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<45> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<45> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<45> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<45> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<45> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<45> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<45> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<45> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<45> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<45> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<45> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<45> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<45> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<45> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<45> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<45> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<45> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<45> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<45> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<45> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<45> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<45> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<45> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<45> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<45> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 40 >::type >::type case40; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type >::type case_label40; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 41 >::type >::type case41; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type >::type case_label41; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 42 >::type >::type case42; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case42
, 0 >::type >::type >::type case_label42; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 43 >::type >::type case43; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type >::type case_label43; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 44 >::type >::type case44; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type >::type case_label44;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<40>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<41>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<42>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<43>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<44>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -2379,19 +2797,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<45> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<45> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<45> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<45> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<45> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<45> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<45> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<45> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<45> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<45> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<45> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<45> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<45> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<45> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<45> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<45> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<45> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<45> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<45> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<45> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<45> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<45> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<45> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<45> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<45> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<45> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<45> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<45> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<45> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<45> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<45> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<45> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<45> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<45> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<45> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<45> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<45> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<45> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<45> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<45> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<45> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<45> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<45> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<45> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43;
- mpl::int_<44>
- idx44;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 40 >::type >::type case40; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type >::type case_label40; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 41 >::type >::type case41; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type >::type case_label41; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 42 >::type >::type case42; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case42
, 0 >::type >::type >::type case_label42; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 43 >::type >::type case43; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type >::type case_label43;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<40>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<41>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<42>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<43>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx44
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 44
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -2415,10 +2838,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<46> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<46> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<46> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<46> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<46> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<46> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<46> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<46> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<46> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<46> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<46> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<46> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<46> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<46> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<46> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<46> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<46> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<46> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<46> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<46> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<46> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<46> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<46> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<46> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<46> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<46> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<46> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<46> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<46> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<46> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<46> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<46> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<46> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<46> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<46> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<46> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<46> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<46> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<46> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<46> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<46> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<46> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<46> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<46> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<46> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<45> , mpl::int_<46> ) >::type case45; typedef typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type case_label45; mpl::int_<45> idx45;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 40 >::type >::type case40; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type >::type case_label40; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 41 >::type >::type case41; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type >::type case_label41; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 42 >::type >::type case42; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case42
, 0 >::type >::type >::type case_label42; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 43 >::type >::type case43; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type >::type case_label43; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 44 >::type >::type case44; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type >::type case_label44; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 45 >::type >::type case45; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type >::type case_label45;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<40>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<41>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<42>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<43>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<44>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( fusion::de
ref( fusion::advance_c<45>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -2431,19 +2861,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<46> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<46> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<46> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<46> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<46> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<46> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<46> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<46> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<46> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<46> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<46> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<46> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<46> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<46> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<46> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<46> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<46> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<46> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<46> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<46> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<46> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<46> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<46> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<46> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<46> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<46> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<46> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<46> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<46> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<46> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<46> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<46> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<46> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<46> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<46> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<46> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<46> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<46> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<46> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<46> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<46> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<46> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<46> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<46> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<46> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44;
- mpl::int_<45>
- idx45;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 40 >::type >::type case40; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type >::type case_label40; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 41 >::type >::type case41; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type >::type case_label41; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 42 >::type >::type case42; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case42
, 0 >::type >::type >::type case_label42; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 43 >::type >::type case43; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type >::type case_label43; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 44 >::type >::type case44; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type >::type case_label44;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<40>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<41>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<42>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<43>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<44>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx45
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 45
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -2467,10 +2902,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<47> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<47> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<47> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<47> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<47> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<47> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<47> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<47> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<47> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<47> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<47> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<47> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<47> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<47> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<47> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<47> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<47> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<47> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<47> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<47> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<47> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<47> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<47> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<47> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<47> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<47> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<47> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<47> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<47> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<47> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<47> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<47> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<47> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<47> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<47> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<47> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<47> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<47> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<47> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<47> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<47> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<47> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<47> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<47> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<47> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<45> , mpl::int_<47> ) >::type case45; typedef typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type case_label45; mpl::int_<45> idx45; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<46> , mpl::int_<47> ) >::type case46; typedef typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type case_label46; mpl::int_<46> idx46;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 40 >::type >::type case40; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type >::type case_label40; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 41 >::type >::type case41; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type >::type case_label41; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 42 >::type >::type case42; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case42
, 0 >::type >::type >::type case_label42; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 43 >::type >::type case43; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type >::type case_label43; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 44 >::type >::type case44; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type >::type case_label44; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 45 >::type >::type case45; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type >::type case_label45; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 46 >::type >::type c
ase46; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type >::type case_label46;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<40>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<41>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<42>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<43>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<44>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( fusion::de
ref( fusion::advance_c<45>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<46>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -2483,19 +2925,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<47> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<47> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<47> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<47> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<47> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<47> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<47> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<47> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<47> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<47> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<47> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<47> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<47> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<47> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<47> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<47> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<47> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<47> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<47> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<47> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<47> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<47> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<47> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<47> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<47> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<47> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<47> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<47> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<47> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<47> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<47> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<47> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<47> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<47> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<47> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<47> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<47> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<47> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<47> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<47> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<47> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<47> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<47> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<47> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<47> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<45> , mpl::int_<47> ) >::type case45; typedef typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type case_label45; mpl::int_<45> idx45;
- mpl::int_<46>
- idx46;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 40 >::type >::type case40; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type >::type case_label40; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 41 >::type >::type case41; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type >::type case_label41; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 42 >::type >::type case42; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case42
, 0 >::type >::type >::type case_label42; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 43 >::type >::type case43; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type >::type case_label43; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 44 >::type >::type case44; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type >::type case_label44; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 45 >::type >::type case45; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type >::type case_label45;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<40>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<41>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<42>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<43>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<44>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( fusion::de
ref( fusion::advance_c<45>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx46
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 46
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -2519,10 +2966,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<48> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<48> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<48> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<48> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<48> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<48> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<48> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<48> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<48> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<48> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<48> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<48> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<48> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<48> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<48> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<48> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<48> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<48> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<48> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<48> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<48> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<48> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<48> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<48> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<48> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<48> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<48> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<48> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<48> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<48> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<48> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<48> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<48> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<48> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<48> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<48> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<48> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<48> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<48> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<48> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<48> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<48> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<48> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<48> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<48> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<45> , mpl::int_<48> ) >::type case45; typedef typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type case_label45; mpl::int_<45> idx45; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<46> , mpl::int_<48> ) >::type case46; typedef typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type case_label46; mpl::int_<46> idx46; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<47> , mpl::int_<48> ) >::type case47; typedef typename proto::result_of::value< typename proto::result_of::child_c< case47 , 0 >::type >::type case_label47; mpl::int_<47> idx47;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 40 >::type >::type case40; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type >::type case_label40; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 41 >::type >::type case41; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type >::type case_label41; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 42 >::type >::type case42; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case42
, 0 >::type >::type >::type case_label42; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 43 >::type >::type case43; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type >::type case_label43; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 44 >::type >::type case44; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type >::type case_label44; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 45 >::type >::type case45; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type >::type case_label45; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 46 >::type >::type c
ase46; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type >::type case_label46; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 47 >::type >::type case47; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case47 , 0 >::type >::type >::type case_label47;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , ctx ); break; case case_label47::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx47, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<40>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<41>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<42>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<43>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<44>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( fusion::de
ref( fusion::advance_c<45>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<46>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label47::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<47>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -2535,19 +2989,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<48> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<48> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<48> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<48> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<48> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<48> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<48> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<48> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<48> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<48> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<48> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<48> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<48> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<48> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<48> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<48> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<48> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<48> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<48> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<48> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<48> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<48> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<48> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<48> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<48> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<48> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<48> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<48> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<48> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<48> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<48> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<48> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<48> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<48> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<48> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<48> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<48> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<48> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<48> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<48> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<48> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<48> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<48> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<48> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<48> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<45> , mpl::int_<48> ) >::type case45; typedef typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type case_label45; mpl::int_<45> idx45; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<46> , mpl::int_<48> ) >::type case46; typedef typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type case_label46; mpl::int_<46> idx46;
- mpl::int_<47>
- idx47;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 40 >::type >::type case40; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type >::type case_label40; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 41 >::type >::type case41; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type >::type case_label41; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 42 >::type >::type case42; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case42
, 0 >::type >::type >::type case_label42; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 43 >::type >::type case43; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type >::type case_label43; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 44 >::type >::type case44; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type >::type case_label44; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 45 >::type >::type case45; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type >::type case_label45; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 46 >::type >::type c
ase46; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type >::type case_label46;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<40>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<41>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<42>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<43>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<44>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( fusion::de
ref( fusion::advance_c<45>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<46>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx47
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 47
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -2571,10 +3030,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<49> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<49> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<49> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<49> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<49> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<49> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<49> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<49> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<49> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<49> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<49> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<49> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<49> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<49> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<49> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<49> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<49> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<49> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<49> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<49> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<49> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<49> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<49> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<49> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<49> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<49> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<49> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<49> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<49> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<49> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<49> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<49> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<49> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<49> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<49> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<49> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<49> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<49> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<49> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<49> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<49> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<49> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<49> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<49> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<49> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<45> , mpl::int_<49> ) >::type case45; typedef typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type case_label45; mpl::int_<45> idx45; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<46> , mpl::int_<49> ) >::type case46; typedef typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type case_label46; mpl::int_<46> idx46; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<47> , mpl::int_<49> ) >::type case47; typedef typename proto::result_of::value< typename proto::result_of::child_c< case47 , 0 >::type >::type case_label47; mpl::int_<47> idx47; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<48
> , mpl::int_<49> ) >::type case48; typedef typename proto::result_of::value< typename proto::result_of::child_c< case48 , 0 >::type >::type case_label48; mpl::int_<48> idx48;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 40 >::type >::type case40; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type >::type case_label40; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 41 >::type >::type case41; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type >::type case_label41; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 42 >::type >::type case42; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case42
, 0 >::type >::type >::type case_label42; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 43 >::type >::type case43; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type >::type case_label43; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 44 >::type >::type case44; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type >::type case_label44; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 45 >::type >::type case45; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type >::type case_label45; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 46 >::type >::type c
ase46; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type >::type case_label46; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 47 >::type >::type case47; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case47 , 0 >::type >::type >::type case_label47; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 48 >::type >::type case48; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case48 , 0 >::type >::type >::type case_label48;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , ctx ); break; case case_label47::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx47, size ) ) , ctx ); break; case case_label48::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx48, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<40>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<41>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<42>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<43>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<44>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( fusion::de
ref( fusion::advance_c<45>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<46>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label47::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<47>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label48::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<48>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -2587,19 +3053,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<49> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<49> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<49> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<49> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<49> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<49> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<49> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<49> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<49> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<49> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<49> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<49> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<49> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<49> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<49> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<49> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<49> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<49> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<49> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<49> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<49> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<49> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<49> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<49> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<49> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<49> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<49> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<49> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<49> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<49> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<49> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<49> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<49> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<49> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<49> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<49> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<49> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<49> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<49> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<49> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<49> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<49> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<49> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<49> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<49> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<45> , mpl::int_<49> ) >::type case45; typedef typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type case_label45; mpl::int_<45> idx45; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<46> , mpl::int_<49> ) >::type case46; typedef typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type case_label46; mpl::int_<46> idx46; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<47> , mpl::int_<49> ) >::type case47; typedef typename proto::result_of::value< typename proto::result_of::child_c< case47 , 0 >::type >::type case_label47; mpl::int_<47> idx47;
- mpl::int_<48>
- idx48;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 40 >::type >::type case40; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type >::type case_label40; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 41 >::type >::type case41; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type >::type case_label41; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 42 >::type >::type case42; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case42
, 0 >::type >::type >::type case_label42; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 43 >::type >::type case43; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type >::type case_label43; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 44 >::type >::type case44; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type >::type case_label44; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 45 >::type >::type case45; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type >::type case_label45; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 46 >::type >::type c
ase46; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type >::type case_label46; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 47 >::type >::type case47; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case47 , 0 >::type >::type >::type case_label47;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , ctx ); break; case case_label47::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx47, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<40>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<41>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<42>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<43>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<44>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( fusion::de
ref( fusion::advance_c<45>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<46>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label47::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<47>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx48
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 48
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx
@@ -2623,10 +3094,17 @@
               , mpl::false_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<50> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<50> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<50> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<50> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<50> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<50> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<50> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<50> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<50> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<50> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<50> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<50> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<50> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<50> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<50> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<50> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<50> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<50> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<50> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<50> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<50> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<50> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<50> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<50> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<50> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<50> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<50> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<50> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<50> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<50> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<50> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<50> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<50> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<50> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<50> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<50> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<50> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<50> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<50> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<50> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<50> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<50> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<50> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<50> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<50> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<45> , mpl::int_<50> ) >::type case45; typedef typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type case_label45; mpl::int_<45> idx45; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<46> , mpl::int_<50> ) >::type case46; typedef typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type case_label46; mpl::int_<46> idx46; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<47> , mpl::int_<50> ) >::type case47; typedef typename proto::result_of::value< typename proto::result_of::child_c< case47 , 0 >::type >::type case_label47; mpl::int_<47> idx47; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<48
> , mpl::int_<50> ) >::type case48; typedef typename proto::result_of::value< typename proto::result_of::child_c< case48 , 0 >::type >::type case_label48; mpl::int_<48> idx48; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<49> , mpl::int_<50> ) >::type case49; typedef typename proto::result_of::value< typename proto::result_of::child_c< case49 , 0 >::type >::type case_label49; mpl::int_<49> idx49;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 40 >::type >::type case40; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type >::type case_label40; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 41 >::type >::type case41; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type >::type case_label41; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 42 >::type >::type case42; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case42
, 0 >::type >::type >::type case_label42; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 43 >::type >::type case43; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type >::type case_label43; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 44 >::type >::type case44; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type >::type case_label44; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 45 >::type >::type case45; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type >::type case_label45; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 46 >::type >::type c
ase46; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type >::type case_label46; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 47 >::type >::type case47; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case47 , 0 >::type >::type >::type case_label47; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 48 >::type >::type case48; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case48 , 0 >::type >::type >::type case_label48; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 49 >::type >::type case49; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case49 , 0 >::type >::type >::type case_labe
l49;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , ctx ); break; case case_label47::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx47, size ) ) , ctx ); break; case case_label48::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx48, size ) ) , ctx ); break; case case_label49::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx49, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<40>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<41>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<42>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<43>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<44>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( fusion::de
ref( fusion::advance_c<45>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<46>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label47::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<47>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label48::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<48>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label49::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<49>(fusion::begin(flat_view)) ) ) , ctx ); break;
                 }
             }
             template <typename Context, typename Cond, typename Cases>
@@ -2639,19 +3117,24 @@
               , mpl::true_
             ) const
             {
- typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<0> , mpl::int_<50> ) >::type case0; typedef typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type case_label0; mpl::int_<0> idx0; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<1> , mpl::int_<50> ) >::type case1; typedef typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type case_label1; mpl::int_<1> idx1; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<2> , mpl::int_<50> ) >::type case2; typedef typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type case_label2; mpl::int_<2> idx2; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<3> , mpl::int_<50> ) >::type case3; typedef typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type case_label3; mpl::int_<3> idx3; typedef ty
pename boost::result_of< detail::switch_grammar( Cases , mpl::int_<4> , mpl::int_<50> ) >::type case4; typedef typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type case_label4; mpl::int_<4> idx4; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<5> , mpl::int_<50> ) >::type case5; typedef typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type case_label5; mpl::int_<5> idx5; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<6> , mpl::int_<50> ) >::type case6; typedef typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type case_label6; mpl::int_<6> idx6; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<7> , mpl::int_<50> ) >::type case7; typedef typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type case_label7; mpl::int_<7> idx7; typedef typename boost::result_of< de
tail::switch_grammar( Cases , mpl::int_<8> , mpl::int_<50> ) >::type case8; typedef typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type case_label8; mpl::int_<8> idx8; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<9> , mpl::int_<50> ) >::type case9; typedef typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type case_label9; mpl::int_<9> idx9; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<10> , mpl::int_<50> ) >::type case10; typedef typename proto::result_of::value< typename proto::result_of::child_c< case10 , 0 >::type >::type case_label10; mpl::int_<10> idx10; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<11> , mpl::int_<50> ) >::type case11; typedef typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type case_label11; mpl::int_<11> idx11; typedef typename boost::result_of< detail::switch_gr
ammar( Cases , mpl::int_<12> , mpl::int_<50> ) >::type case12; typedef typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type case_label12; mpl::int_<12> idx12; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<13> , mpl::int_<50> ) >::type case13; typedef typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type case_label13; mpl::int_<13> idx13; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<14> , mpl::int_<50> ) >::type case14; typedef typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type case_label14; mpl::int_<14> idx14; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<15> , mpl::int_<50> ) >::type case15; typedef typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type case_label15; mpl::int_<15> idx15; typedef typename boost::result_of< detail::switch_gramm
ar( Cases , mpl::int_<16> , mpl::int_<50> ) >::type case16; typedef typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type case_label16; mpl::int_<16> idx16; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<17> , mpl::int_<50> ) >::type case17; typedef typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >::type case_label17; mpl::int_<17> idx17; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<18> , mpl::int_<50> ) >::type case18; typedef typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type case_label18; mpl::int_<18> idx18; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<19> , mpl::int_<50> ) >::type case19; typedef typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type case_label19; mpl::int_<19> idx19; typedef typename boost::result_of< detail::switch_grammar(
 Cases , mpl::int_<20> , mpl::int_<50> ) >::type case20; typedef typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type case_label20; mpl::int_<20> idx20; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<21> , mpl::int_<50> ) >::type case21; typedef typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type case_label21; mpl::int_<21> idx21; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<22> , mpl::int_<50> ) >::type case22; typedef typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type case_label22; mpl::int_<22> idx22; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<23> , mpl::int_<50> ) >::type case23; typedef typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type case_label23; mpl::int_<23> idx23; typedef typename boost::result_of< detail::switch_grammar( Ca
ses , mpl::int_<24> , mpl::int_<50> ) >::type case24; typedef typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type case_label24; mpl::int_<24> idx24; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<25> , mpl::int_<50> ) >::type case25; typedef typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type case_label25; mpl::int_<25> idx25; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<26> , mpl::int_<50> ) >::type case26; typedef typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type case_label26; mpl::int_<26> idx26; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<27> , mpl::int_<50> ) >::type case27; typedef typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type case_label27; mpl::int_<27> idx27; typedef typename boost::result_of< detail::switch_grammar( Cases
 , mpl::int_<28> , mpl::int_<50> ) >::type case28; typedef typename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type case_label28; mpl::int_<28> idx28; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<29> , mpl::int_<50> ) >::type case29; typedef typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type case_label29; mpl::int_<29> idx29; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<30> , mpl::int_<50> ) >::type case30; typedef typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type case_label30; mpl::int_<30> idx30; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<31> , mpl::int_<50> ) >::type case31; typedef typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type case_label31; mpl::int_<31> idx31; typedef typename boost::result_of< detail::switch_grammar( Cases ,
mpl::int_<32> , mpl::int_<50> ) >::type case32; typedef typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type case_label32; mpl::int_<32> idx32; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<33> , mpl::int_<50> ) >::type case33; typedef typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type case_label33; mpl::int_<33> idx33; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<34> , mpl::int_<50> ) >::type case34; typedef typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type case_label34; mpl::int_<34> idx34; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<35> , mpl::int_<50> ) >::type case35; typedef typename proto::result_of::value< typename proto::result_of::child_c< case35 , 0 >::type >::type case_label35; mpl::int_<35> idx35; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl
::int_<36> , mpl::int_<50> ) >::type case36; typedef typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type case_label36; mpl::int_<36> idx36; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<37> , mpl::int_<50> ) >::type case37; typedef typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type case_label37; mpl::int_<37> idx37; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<38> , mpl::int_<50> ) >::type case38; typedef typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type case_label38; mpl::int_<38> idx38; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<39> , mpl::int_<50> ) >::type case39; typedef typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type case_label39; mpl::int_<39> idx39; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::i
nt_<40> , mpl::int_<50> ) >::type case40; typedef typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type case_label40; mpl::int_<40> idx40; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<41> , mpl::int_<50> ) >::type case41; typedef typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type case_label41; mpl::int_<41> idx41; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<42> , mpl::int_<50> ) >::type case42; typedef typename proto::result_of::value< typename proto::result_of::child_c< case42 , 0 >::type >::type case_label42; mpl::int_<42> idx42; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<43> , mpl::int_<50> ) >::type case43; typedef typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type case_label43; mpl::int_<43> idx43; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_
<44> , mpl::int_<50> ) >::type case44; typedef typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type case_label44; mpl::int_<44> idx44; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<45> , mpl::int_<50> ) >::type case45; typedef typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type case_label45; mpl::int_<45> idx45; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<46> , mpl::int_<50> ) >::type case46; typedef typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type case_label46; mpl::int_<46> idx46; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<47> , mpl::int_<50> ) >::type case47; typedef typename proto::result_of::value< typename proto::result_of::child_c< case47 , 0 >::type >::type case_label47; mpl::int_<47> idx47; typedef typename boost::result_of< detail::switch_grammar( Cases , mpl::int_<48
> , mpl::int_<50> ) >::type case48; typedef typename proto::result_of::value< typename proto::result_of::child_c< case48 , 0 >::type >::type case_label48; mpl::int_<48> idx48;
- mpl::int_<49>
- idx49;
+ typedef
+ typename proto::result_of::flatten<Cases const&>::type
+ flat_view_type;
+ typedef
+ typename fusion::result_of::begin<flat_view_type>::type
+ flat_view_begin;
+ flat_view_type flat_view(proto::flatten(cases));
+ typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 0 >::type >::type case0; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case0 , 0 >::type >::type >::type case_label0; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 1 >::type >::type case1; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case1 , 0 >::type >::type >::type case_label1; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 2 >::type >::type case2; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case2 , 0 >::type >::type >::type case_label2; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 3 >::type >::type case3; typedef typename proto::detail::
uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case3 , 0 >::type >::type >::type case_label3; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 4 >::type >::type case4; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case4 , 0 >::type >::type >::type case_label4; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 5 >::type >::type case5; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case5 , 0 >::type >::type >::type case_label5; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 6 >::type >::type case6; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case6 , 0 >::type >::type >::type case_label6; typedef typename fusion::result_of::deref< typen
ame fusion::result_of::advance_c< flat_view_begin , 7 >::type >::type case7; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case7 , 0 >::type >::type >::type case_label7; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 8 >::type >::type case8; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case8 , 0 >::type >::type >::type case_label8; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 9 >::type >::type case9; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case9 , 0 >::type >::type >::type case_label9; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 10 >::type >::type case10; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::resu
lt_of::child_c< case10 , 0 >::type >::type >::type case_label10; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 11 >::type >::type case11; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case11 , 0 >::type >::type >::type case_label11; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 12 >::type >::type case12; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case12 , 0 >::type >::type >::type case_label12; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 13 >::type >::type case13; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case13 , 0 >::type >::type >::type case_label13; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin
 , 14 >::type >::type case14; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case14 , 0 >::type >::type >::type case_label14; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 15 >::type >::type case15; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case15 , 0 >::type >::type >::type case_label15; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 16 >::type >::type case16; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case16 , 0 >::type >::type >::type case_label16; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 17 >::type >::type case17; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case17 , 0 >::type >:
:type >::type case_label17; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 18 >::type >::type case18; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case18 , 0 >::type >::type >::type case_label18; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 19 >::type >::type case19; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case19 , 0 >::type >::type >::type case_label19; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 20 >::type >::type case20; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case20 , 0 >::type >::type >::type case_label20; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 21 >::type >::type case21; typedef
 typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case21 , 0 >::type >::type >::type case_label21; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 22 >::type >::type case22; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case22 , 0 >::type >::type >::type case_label22; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 23 >::type >::type case23; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case23 , 0 >::type >::type >::type case_label23; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 24 >::type >::type case24; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case24 , 0 >::type >::type >::type case_label24; typedef t
ypename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 25 >::type >::type case25; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case25 , 0 >::type >::type >::type case_label25; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 26 >::type >::type case26; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case26 , 0 >::type >::type >::type case_label26; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 27 >::type >::type case27; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case27 , 0 >::type >::type >::type case_label27; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 28 >::type >::type case28; typedef typename proto::detail::uncvref< typ
ename proto::result_of::value< typename proto::result_of::child_c< case28 , 0 >::type >::type >::type case_label28; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 29 >::type >::type case29; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case29 , 0 >::type >::type >::type case_label29; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 30 >::type >::type case30; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case30 , 0 >::type >::type >::type case_label30; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 31 >::type >::type case31; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case31 , 0 >::type >::type >::type case_label31; typedef typename fusion::result_of::deref< typ
ename fusion::result_of::advance_c< flat_view_begin , 32 >::type >::type case32; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case32 , 0 >::type >::type >::type case_label32; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 33 >::type >::type case33; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case33 , 0 >::type >::type >::type case_label33; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 34 >::type >::type case34; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case34 , 0 >::type >::type >::type case_label34; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 35 >::type >::type case35; typedef typename proto::detail::uncvref< typename proto::result_of::value< typena
me proto::result_of::child_c< case35 , 0 >::type >::type >::type case_label35; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 36 >::type >::type case36; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case36 , 0 >::type >::type >::type case_label36; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 37 >::type >::type case37; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case37 , 0 >::type >::type >::type case_label37; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 38 >::type >::type case38; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case38 , 0 >::type >::type >::type case_label38; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< f
lat_view_begin , 39 >::type >::type case39; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case39 , 0 >::type >::type >::type case_label39; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 40 >::type >::type case40; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case40 , 0 >::type >::type >::type case_label40; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 41 >::type >::type case41; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case41 , 0 >::type >::type >::type case_label41; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 42 >::type >::type case42; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case42
, 0 >::type >::type >::type case_label42; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 43 >::type >::type case43; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case43 , 0 >::type >::type >::type case_label43; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 44 >::type >::type case44; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case44 , 0 >::type >::type >::type case_label44; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 45 >::type >::type case45; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case45 , 0 >::type >::type >::type case_label45; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 46 >::type >::type c
ase46; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case46 , 0 >::type >::type >::type case_label46; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 47 >::type >::type case47; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case47 , 0 >::type >::type >::type case_label47; typedef typename fusion::result_of::deref< typename fusion::result_of::advance_c< flat_view_begin , 48 >::type >::type case48; typedef typename proto::detail::uncvref< typename proto::result_of::value< typename proto::result_of::child_c< case48 , 0 >::type >::type >::type case_label48;
                 switch(eval(cond, ctx))
                 {
- case case_label0::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx0, size ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx1, size ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx2, size ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx3, size ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx4, size ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx5, size ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx6, size ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx7, size ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx8, size ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx9, size ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx10, size ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx11, size ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx12, size ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx13, size ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx14, size ) ) , ctx ); break; case case_label15::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx15, size ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx16, size ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( deta
il::switch_grammar()( cases, idx17, size ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx18, size ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx19, size ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx20, size ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx21, size ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx22, size ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx23, size ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx24, size ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx25, size ) ) , ctx ); break; case case_label26::value :
 eval( proto::child_c<1>( detail::switch_grammar()( cases, idx26, size ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx27, size ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx28, size ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx29, size ) ) , ctx ); break; case case_label30::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx30, size ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx31, size ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx32, size ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx33, size ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx34, size ) ) , ctx ); bre
ak; case case_label35::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx35, size ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx36, size ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx37, size ) ) , ctx ); break; case case_label38::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx38, size ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx39, size ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx40, size ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx41, size ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx42, size ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( detail::switch_grammar()( cases
, idx43, size ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx44, size ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx45, size ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx46, size ) ) , ctx ); break; case case_label47::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx47, size ) ) , ctx ); break; case case_label48::value : eval( proto::child_c<1>( detail::switch_grammar()( cases, idx48, size ) ) , ctx ); break;
+ case case_label0::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<0>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label1::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<1>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label2::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<2>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label3::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<3>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label4::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<4>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label5::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<5>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label6::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<6>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label7::value : eval( proto::child_c<1>( fusion::deref( fusio
n::advance_c<7>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label8::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<8>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label9::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<9>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label10::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<10>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label11::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<11>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label12::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<12>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label13::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<13>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label14::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<14>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label15::v
alue : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<15>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label16::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<16>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label17::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<17>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label18::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<18>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label19::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<19>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label20::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<20>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label21::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<21>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label22::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<22>(fusion::b
egin(flat_view)) ) ) , ctx ); break; case case_label23::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<23>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label24::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<24>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label25::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<25>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label26::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<26>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label27::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<27>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label28::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<28>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label29::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<29>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label30::value : eval( proto::c
hild_c<1>( fusion::deref( fusion::advance_c<30>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label31::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<31>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label32::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<32>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label33::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<33>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label34::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<34>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label35::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<35>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label36::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<36>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label37::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<37>(fusion::begin(flat_view)) ) )
, ctx ); break; case case_label38::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<38>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label39::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<39>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label40::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<40>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label41::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<41>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label42::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<42>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label43::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<43>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label44::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<44>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label45::value : eval( proto::child_c<1>( fusion::de
ref( fusion::advance_c<45>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label46::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<46>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label47::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<47>(fusion::begin(flat_view)) ) ) , ctx ); break; case case_label48::value : eval( proto::child_c<1>( fusion::deref( fusion::advance_c<48>(fusion::begin(flat_view)) ) ) , ctx ); break;
                     default:
                         eval(
                             proto::child_c<0>(
- detail::switch_grammar()(
- cases
- , idx49
- , size
+ fusion::deref(
+ fusion::advance_c<
+ 49
+ >(fusion::begin(flat_view))
                                 )
                             )
                             , ctx

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_eval.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,21 +5,21 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if !defined(PHOENIX_PREPROCESSED_TRY_CATCH_EVAL)
-#define PHOENIX_PREPROCESSED_TRY_CATCH_EVAL
+#if !defined(BOOST_PHOENIX_PREPROCESSED_TRY_CATCH_EVAL)
+#define BOOST_PHOENIX_PREPROCESSED_TRY_CATCH_EVAL
 
-#if PHOENIX_LIMIT <= 10
+#if BOOST_PHOENIX_LIMIT <= 10
 #include <boost/phoenix/statement/detail/preprocessed/try_catch_eval_10.hpp>
-#elif PHOENIX_LIMIT <= 20
+#elif BOOST_PHOENIX_LIMIT <= 20
 #include <boost/phoenix/statement/detail/preprocessed/try_catch_eval_20.hpp>
-#elif PHOENIX_LIMIT <= 30
+#elif BOOST_PHOENIX_LIMIT <= 30
 #include <boost/phoenix/statement/detail/preprocessed/try_catch_eval_30.hpp>
-#elif PHOENIX_LIMIT <= 40
+#elif BOOST_PHOENIX_LIMIT <= 40
 #include <boost/phoenix/statement/detail/preprocessed/try_catch_eval_40.hpp>
-#elif PHOENIX_LIMIT <= 50
+#elif BOOST_PHOENIX_LIMIT <= 50
 #include <boost/phoenix/statement/detail/preprocessed/try_catch_eval_50.hpp>
 #else
-#error "PHOENIX_LIMIT out of bounds for preprocessed headers"
+#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
 #endif
 
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,21 +5,21 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if !defined(PHOENIX_PREPROCESSED_TRY_CATCH_EXPRESSION)
-#define PHOENIX_PREPROCESSED_TRY_CATCH_EXPRESSION
+#if !defined(BOOST_PHOENIX_PREPROCESSED_TRY_CATCH_EXPRESSION)
+#define BOOST_PHOENIX_PREPROCESSED_TRY_CATCH_EXPRESSION
 
-#if PHOENIX_LIMIT <= 10
+#if BOOST_PHOENIX_LIMIT <= 10
 #include <boost/phoenix/statement/detail/preprocessed/try_catch_expression_10.hpp>
-#elif PHOENIX_LIMIT <= 20
+#elif BOOST_PHOENIX_LIMIT <= 20
 #include <boost/phoenix/statement/detail/preprocessed/try_catch_expression_20.hpp>
-#elif PHOENIX_LIMIT <= 30
+#elif BOOST_PHOENIX_LIMIT <= 30
 #include <boost/phoenix/statement/detail/preprocessed/try_catch_expression_30.hpp>
-#elif PHOENIX_LIMIT <= 40
+#elif BOOST_PHOENIX_LIMIT <= 40
 #include <boost/phoenix/statement/detail/preprocessed/try_catch_expression_40.hpp>
-#elif PHOENIX_LIMIT <= 50
+#elif BOOST_PHOENIX_LIMIT <= 50
 #include <boost/phoenix/statement/detail/preprocessed/try_catch_expression_50.hpp>
 #else
-#error "PHOENIX_LIMIT out of bounds for preprocessed headers"
+#error "BOOST_PHOENIX_LIMIT out of bounds for preprocessed headers"
 #endif
 
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression_10.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression_10.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression_10.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -12,13 +12,22 @@
     
     
     
- template <typename Try >
- struct try_catch<Try >
+ template <
+ typename Try
+
+
+ >
+ struct try_catch<
+ Try
+
+
+ >
             : expr_ext<
                 try_catch_actor
               , tag::try_catch
               , Try
- >
+
+ >
         {};
      
     
@@ -28,13 +37,22 @@
     
     
     
- template <typename Try , typename A0>
- struct try_catch<Try , A0>
+ template <
+ typename Try
+ ,
+ typename A0
+ >
+ struct try_catch<
+ Try
+ ,
+ A0
+ >
             : expr_ext<
                 try_catch_actor
               , tag::try_catch
               , Try
- , A0>
+ , A0
+ >
         {};
      
     
@@ -44,13 +62,22 @@
     
     
     
- template <typename Try , typename A0 , typename A1>
- struct try_catch<Try , A0 , A1>
+ template <
+ typename Try
+ ,
+ typename A0 , typename A1
+ >
+ struct try_catch<
+ Try
+ ,
+ A0 , A1
+ >
             : expr_ext<
                 try_catch_actor
               , tag::try_catch
               , Try
- , A0 , A1>
+ , A0 , A1
+ >
         {};
      
     
@@ -60,13 +87,22 @@
     
     
     
- template <typename Try , typename A0 , typename A1 , typename A2>
- struct try_catch<Try , A0 , A1 , A2>
+ 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>
+ , A0 , A1 , A2
+ >
         {};
      
     
@@ -76,13 +112,22 @@
     
     
     
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3>
- struct try_catch<Try , A0 , A1 , A2 , A3>
+ 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>
+ , A0 , A1 , A2 , A3
+ >
         {};
      
     
@@ -92,13 +137,22 @@
     
     
     
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4>
+ 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>
+ , A0 , A1 , A2 , A3 , A4
+ >
         {};
      
     
@@ -108,13 +162,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5
+ >
         {};
      
     
@@ -124,13 +187,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6
+ >
         {};
      
     
@@ -140,13 +212,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
+ >
         {};
      
     
@@ -156,13 +237,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
+ >
         {};
      
     
@@ -172,12 +262,21 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
+ >
         {};
      

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression_20.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression_20.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression_20.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -12,13 +12,22 @@
     
     
     
- template <typename Try >
- struct try_catch<Try >
+ template <
+ typename Try
+
+
+ >
+ struct try_catch<
+ Try
+
+
+ >
             : expr_ext<
                 try_catch_actor
               , tag::try_catch
               , Try
- >
+
+ >
         {};
      
     
@@ -28,13 +37,22 @@
     
     
     
- template <typename Try , typename A0>
- struct try_catch<Try , A0>
+ template <
+ typename Try
+ ,
+ typename A0
+ >
+ struct try_catch<
+ Try
+ ,
+ A0
+ >
             : expr_ext<
                 try_catch_actor
               , tag::try_catch
               , Try
- , A0>
+ , A0
+ >
         {};
      
     
@@ -44,13 +62,22 @@
     
     
     
- template <typename Try , typename A0 , typename A1>
- struct try_catch<Try , A0 , A1>
+ template <
+ typename Try
+ ,
+ typename A0 , typename A1
+ >
+ struct try_catch<
+ Try
+ ,
+ A0 , A1
+ >
             : expr_ext<
                 try_catch_actor
               , tag::try_catch
               , Try
- , A0 , A1>
+ , A0 , A1
+ >
         {};
      
     
@@ -60,13 +87,22 @@
     
     
     
- template <typename Try , typename A0 , typename A1 , typename A2>
- struct try_catch<Try , A0 , A1 , A2>
+ 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>
+ , A0 , A1 , A2
+ >
         {};
      
     
@@ -76,13 +112,22 @@
     
     
     
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3>
- struct try_catch<Try , A0 , A1 , A2 , A3>
+ 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>
+ , A0 , A1 , A2 , A3
+ >
         {};
      
     
@@ -92,13 +137,22 @@
     
     
     
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4>
+ 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>
+ , A0 , A1 , A2 , A3 , A4
+ >
         {};
      
     
@@ -108,13 +162,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5
+ >
         {};
      
     
@@ -124,13 +187,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6
+ >
         {};
      
     
@@ -140,13 +212,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
+ >
         {};
      
     
@@ -156,13 +237,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
+ >
         {};
      
     
@@ -172,13 +262,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
+ >
         {};
      
     
@@ -188,13 +287,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
+ >
         {};
      
     
@@ -204,13 +312,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
+ >
         {};
      
     
@@ -220,13 +337,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
+ >
         {};
      
     
@@ -236,13 +362,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
+ >
         {};
      
     
@@ -252,13 +387,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
+ >
         {};
      
     
@@ -268,13 +412,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
+ >
         {};
      
     
@@ -284,13 +437,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
+ >
         {};
      
     
@@ -300,13 +462,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
+ >
         {};
      
     
@@ -316,13 +487,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
+ >
         {};
      
     
@@ -332,12 +512,21 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
+ >
         {};
      

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression_30.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression_30.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression_30.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -12,13 +12,22 @@
     
     
     
- template <typename Try >
- struct try_catch<Try >
+ template <
+ typename Try
+
+
+ >
+ struct try_catch<
+ Try
+
+
+ >
             : expr_ext<
                 try_catch_actor
               , tag::try_catch
               , Try
- >
+
+ >
         {};
      
     
@@ -28,13 +37,22 @@
     
     
     
- template <typename Try , typename A0>
- struct try_catch<Try , A0>
+ template <
+ typename Try
+ ,
+ typename A0
+ >
+ struct try_catch<
+ Try
+ ,
+ A0
+ >
             : expr_ext<
                 try_catch_actor
               , tag::try_catch
               , Try
- , A0>
+ , A0
+ >
         {};
      
     
@@ -44,13 +62,22 @@
     
     
     
- template <typename Try , typename A0 , typename A1>
- struct try_catch<Try , A0 , A1>
+ template <
+ typename Try
+ ,
+ typename A0 , typename A1
+ >
+ struct try_catch<
+ Try
+ ,
+ A0 , A1
+ >
             : expr_ext<
                 try_catch_actor
               , tag::try_catch
               , Try
- , A0 , A1>
+ , A0 , A1
+ >
         {};
      
     
@@ -60,13 +87,22 @@
     
     
     
- template <typename Try , typename A0 , typename A1 , typename A2>
- struct try_catch<Try , A0 , A1 , A2>
+ 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>
+ , A0 , A1 , A2
+ >
         {};
      
     
@@ -76,13 +112,22 @@
     
     
     
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3>
- struct try_catch<Try , A0 , A1 , A2 , A3>
+ 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>
+ , A0 , A1 , A2 , A3
+ >
         {};
      
     
@@ -92,13 +137,22 @@
     
     
     
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4>
+ 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>
+ , A0 , A1 , A2 , A3 , A4
+ >
         {};
      
     
@@ -108,13 +162,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5
+ >
         {};
      
     
@@ -124,13 +187,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6
+ >
         {};
      
     
@@ -140,13 +212,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
+ >
         {};
      
     
@@ -156,13 +237,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
+ >
         {};
      
     
@@ -172,13 +262,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
+ >
         {};
      
     
@@ -188,13 +287,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
+ >
         {};
      
     
@@ -204,13 +312,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
+ >
         {};
      
     
@@ -220,13 +337,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
+ >
         {};
      
     
@@ -236,13 +362,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
+ >
         {};
      
     
@@ -252,13 +387,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
+ >
         {};
      
     
@@ -268,13 +412,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
+ >
         {};
      
     
@@ -284,13 +437,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
+ >
         {};
      
     
@@ -300,13 +462,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
+ >
         {};
      
     
@@ -316,13 +487,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
+ >
         {};
      
     
@@ -332,13 +512,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
+ >
         {};
      
     
@@ -348,13 +537,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
+ >
         {};
      
     
@@ -364,13 +562,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
+ >
         {};
      
     
@@ -380,13 +587,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
+ >
         {};
      
     
@@ -396,13 +612,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
+ >
         {};
      
     
@@ -412,13 +637,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24
+ >
         {};
      
     
@@ -428,13 +662,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25
+ >
         {};
      
     
@@ -444,13 +687,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26
+ >
         {};
      
     
@@ -460,13 +712,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , 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
+ >
         {};
      
     
@@ -476,13 +737,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , 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
+ >
         {};
      
     
@@ -492,12 +762,21 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , 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
+ >
         {};
      

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -0,0 +1,1032 @@
+/*==============================================================================
+ 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/detail/preprocessed/try_catch_expression_50.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression_50.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression_50.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -12,13 +12,22 @@
     
     
     
- template <typename Try >
- struct try_catch<Try >
+ template <
+ typename Try
+
+
+ >
+ struct try_catch<
+ Try
+
+
+ >
             : expr_ext<
                 try_catch_actor
               , tag::try_catch
               , Try
- >
+
+ >
         {};
      
     
@@ -28,13 +37,22 @@
     
     
     
- template <typename Try , typename A0>
- struct try_catch<Try , A0>
+ template <
+ typename Try
+ ,
+ typename A0
+ >
+ struct try_catch<
+ Try
+ ,
+ A0
+ >
             : expr_ext<
                 try_catch_actor
               , tag::try_catch
               , Try
- , A0>
+ , A0
+ >
         {};
      
     
@@ -44,13 +62,22 @@
     
     
     
- template <typename Try , typename A0 , typename A1>
- struct try_catch<Try , A0 , A1>
+ template <
+ typename Try
+ ,
+ typename A0 , typename A1
+ >
+ struct try_catch<
+ Try
+ ,
+ A0 , A1
+ >
             : expr_ext<
                 try_catch_actor
               , tag::try_catch
               , Try
- , A0 , A1>
+ , A0 , A1
+ >
         {};
      
     
@@ -60,13 +87,22 @@
     
     
     
- template <typename Try , typename A0 , typename A1 , typename A2>
- struct try_catch<Try , A0 , A1 , A2>
+ 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>
+ , A0 , A1 , A2
+ >
         {};
      
     
@@ -76,13 +112,22 @@
     
     
     
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3>
- struct try_catch<Try , A0 , A1 , A2 , A3>
+ 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>
+ , A0 , A1 , A2 , A3
+ >
         {};
      
     
@@ -92,13 +137,22 @@
     
     
     
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4>
+ 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>
+ , A0 , A1 , A2 , A3 , A4
+ >
         {};
      
     
@@ -108,13 +162,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5
+ >
         {};
      
     
@@ -124,13 +187,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6
+ >
         {};
      
     
@@ -140,13 +212,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
+ >
         {};
      
     
@@ -156,13 +237,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
+ >
         {};
      
     
@@ -172,13 +262,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
+ >
         {};
      
     
@@ -188,13 +287,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
+ >
         {};
      
     
@@ -204,13 +312,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
+ >
         {};
      
     
@@ -220,13 +337,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
+ >
         {};
      
     
@@ -236,13 +362,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
+ >
         {};
      
     
@@ -252,13 +387,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
+ >
         {};
      
     
@@ -268,13 +412,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
+ >
         {};
      
     
@@ -284,13 +437,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
+ >
         {};
      
     
@@ -300,13 +462,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
+ >
         {};
      
     
@@ -316,13 +487,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
+ >
         {};
      
     
@@ -332,13 +512,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
+ >
         {};
      
     
@@ -348,13 +537,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
+ >
         {};
      
     
@@ -364,13 +562,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
+ >
         {};
      
     
@@ -380,13 +587,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
+ >
         {};
      
     
@@ -396,13 +612,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
+ >
         {};
      
     
@@ -412,13 +637,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24
+ >
         {};
      
     
@@ -428,13 +662,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25
+ >
         {};
      
     
@@ -444,13 +687,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26
+ >
         {};
      
     
@@ -460,13 +712,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , 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
+ >
         {};
      
     
@@ -476,13 +737,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , 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
+ >
         {};
      
     
@@ -492,13 +762,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , 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
+ >
         {};
      
     
@@ -508,13 +787,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , 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
+ >
         {};
      
     
@@ -524,13 +812,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , 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
+ >
         {};
      
     
@@ -540,13 +837,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , 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
+ >
         {};
      
     
@@ -556,13 +862,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , 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
+ >
         {};
      
     
@@ -572,13 +887,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , 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
+ >
         {};
      
     
@@ -588,13 +912,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , 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
+ >
         {};
      
     
@@ -604,13 +937,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , 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
+ >
         {};
      
     
@@ -620,13 +962,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , 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
+ >
         {};
      
     
@@ -636,13 +987,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , 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
+ >
         {};
      
     
@@ -652,13 +1012,22 @@
     
     
     
- 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>
+ 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>
+ , A0 , A1 , A2 , 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
+ >
         {};
      
     
@@ -668,13 +1037,22 @@
     
     
     
- 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 , typename A40>
- 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 , A40>
+ 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 , typename A40
+ >
+ 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 , A40
+ >
             : 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 , A40>
+ , A0 , A1 , A2 , 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 , A40
+ >
         {};
      
     
@@ -684,13 +1062,22 @@
     
     
     
- 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 , typename A40 , typename A41>
- 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 , A40 , A41>
+ 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 , typename A40 , typename A41
+ >
+ 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 , A40 , A41
+ >
             : 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 , A40 , A41>
+ , A0 , A1 , A2 , 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 , A40 , A41
+ >
         {};
      
     
@@ -700,13 +1087,22 @@
     
     
     
- 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 , typename A40 , typename A41 , typename A42>
- 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 , A40 , A41 , A42>
+ 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 , typename A40 , typename A41 , typename A42
+ >
+ 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 , A40 , A41 , A42
+ >
             : 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 , A40 , A41 , A42>
+ , A0 , A1 , A2 , 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 , A40 , A41 , A42
+ >
         {};
      
     
@@ -716,13 +1112,22 @@
     
     
     
- 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 , typename A40 , typename A41 , typename A42 , typename A43>
- 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 , A40 , A41 , A42 , A43>
+ 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 , typename A40 , typename A41 , typename A42 , typename A43
+ >
+ 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 , A40 , A41 , A42 , A43
+ >
             : 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 , A40 , A41 , A42 , A43>
+ , A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43
+ >
         {};
      
     
@@ -732,13 +1137,22 @@
     
     
     
- 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44>
- 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 , A40 , A41 , A42 , A43 , A44>
+ 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44
+ >
+ 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 , A40 , A41 , A42 , A43 , A44
+ >
             : 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 , A40 , A41 , A42 , A43 , A44>
+ , A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44
+ >
         {};
      
     
@@ -748,13 +1162,22 @@
     
     
     
- 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45>
- 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 , A40 , A41 , A42 , A43 , A44 , A45>
+ 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45
+ >
+ 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 , A40 , A41 , A42 , A43 , A44 , A45
+ >
             : 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 , A40 , A41 , A42 , A43 , A44 , A45>
+ , A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45
+ >
         {};
      
     
@@ -764,13 +1187,22 @@
     
     
     
- 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46>
- 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46>
+ 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46
+ >
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46
+ >
             : 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46>
+ , A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46
+ >
         {};
      
     
@@ -780,13 +1212,22 @@
     
     
     
- 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47>
- 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47>
+ 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47
+ >
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47
+ >
             : 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47>
+ , A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47
+ >
         {};
      
     
@@ -796,13 +1237,22 @@
     
     
     
- 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48>
- 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48>
+ 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48
+ >
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48
+ >
             : 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48>
+ , A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48
+ >
         {};
      
     
@@ -812,12 +1262,21 @@
     
     
     
- 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49>
- 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 , A49>
+ 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 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48 , typename A49
+ >
+ 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 , A49
+ >
             : 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 , A49>
+ , A0 , A1 , A2 , 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 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48 , A49
+ >
         {};
      

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/switch.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/switch.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/switch.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,8 +1,7 @@
 
-/*
-#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_STATEMENT_DETAIL_SWITCH_HPP
-#define PHOENIX_STATEMENT_DETAIL_SWITCH_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_STATEMENT_DETAIL_SWITCH_HPP
+#define BOOST_PHOENIX_STATEMENT_DETAIL_SWITCH_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
@@ -10,17 +9,16 @@
 
 #endif
 #else
-*/
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_STATEMENT_DETAIL_SWITCH_HPP
-#define PHOENIX_STATEMENT_DETAIL_SWITCH_HPP
+#ifndef BOOST_PHOENIX_STATEMENT_DETAIL_SWITCH_HPP
+#define BOOST_PHOENIX_STATEMENT_DETAIL_SWITCH_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/switch_" PHOENIX_LIMIT_STR ".hpp")
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/switch_" BOOST_PHOENIX_LIMIT_STR ".hpp")
 #endif
 
 /*==============================================================================
@@ -31,11 +29,11 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(preserve: 1)
 #endif
 
- #define PHOENIX_SWITCH_EVAL_TYPEDEF_R(Z, N, DATA) \
+ #define BOOST_PHOENIX_SWITCH_EVAL_TYPEDEF_R(Z, N, DATA) \
             typedef \
                 typename fusion::result_of::deref< \
                     typename fusion::result_of::advance_c< \
@@ -56,7 +54,7 @@
                 BOOST_PP_CAT(case_label, N); \
     /**/
 
- #define PHOENIX_SWITCH_EVAL_R(Z, N, DATA) \
+ #define BOOST_PHOENIX_SWITCH_EVAL_R(Z, N, DATA) \
         case BOOST_PP_CAT(case_label, N)::value : \
             eval( \
                 proto::child_c<1>( \
@@ -69,15 +67,15 @@
             break; \
     /**/
 
-#define PHOENIX_ITERATION_PARAMS \
- (3, (2, PHOENIX_LIMIT, \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (2, BOOST_PHOENIX_LIMIT, \
         <boost/phoenix/statement/detail/switch.hpp>))
-#include PHOENIX_ITERATE()
+#include BOOST_PHOENIX_ITERATE()
 
- #undef PHOENIX_SWITCH_EVAL_R
- #undef PHOENIX_SWITCH_EVAL_TYPEDEF
+ #undef BOOST_PHOENIX_SWITCH_EVAL_R
+ #undef BOOST_PHOENIX_SWITCH_EVAL_TYPEDEF
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
@@ -90,7 +88,7 @@
                 Context & ctx
               , Cond const & cond
               , Cases const & cases
- , mpl::int_<PHOENIX_ITERATION> size
+ , mpl::int_<BOOST_PHOENIX_ITERATION> size
               , mpl::false_
             ) const
             {
@@ -105,14 +103,14 @@
                 flat_view_type flat_view(proto::flatten(cases));
 
                 BOOST_PP_REPEAT(
- PHOENIX_ITERATION
- , PHOENIX_SWITCH_EVAL_TYPEDEF_R
- , PHOENIX_ITERATION
+ BOOST_PHOENIX_ITERATION
+ , BOOST_PHOENIX_SWITCH_EVAL_TYPEDEF_R
+ , BOOST_PHOENIX_ITERATION
                 )
 
                 switch(eval(cond, ctx))
                 {
- BOOST_PP_REPEAT(PHOENIX_ITERATION, PHOENIX_SWITCH_EVAL_R, _)
+ BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, BOOST_PHOENIX_SWITCH_EVAL_R, _)
                 }
             }
 
@@ -122,7 +120,7 @@
                 Context & ctx
               , Cond const & cond
               , Cases const & cases
- , mpl::int_<PHOENIX_ITERATION> size
+ , mpl::int_<BOOST_PHOENIX_ITERATION> size
               , mpl::true_
             ) const
             {
@@ -137,23 +135,23 @@
                 flat_view_type flat_view(proto::flatten(cases));
 
                 BOOST_PP_REPEAT(
- BOOST_PP_DEC(PHOENIX_ITERATION)
- , PHOENIX_SWITCH_EVAL_TYPEDEF_R
- , PHOENIX_ITERATION
+ BOOST_PP_DEC(BOOST_PHOENIX_ITERATION)
+ , BOOST_PHOENIX_SWITCH_EVAL_TYPEDEF_R
+ , BOOST_PHOENIX_ITERATION
                 )
 
                 switch(eval(cond, ctx))
                 {
                     BOOST_PP_REPEAT(
- BOOST_PP_DEC(PHOENIX_ITERATION)
- , PHOENIX_SWITCH_EVAL_R, _
+ BOOST_PP_DEC(BOOST_PHOENIX_ITERATION)
+ , BOOST_PHOENIX_SWITCH_EVAL_R, _
                     )
                     default:
                         eval(
                             proto::child_c<0>(
                                 fusion::deref(
                                     fusion::advance_c<
- BOOST_PP_DEC(PHOENIX_ITERATION)
+ BOOST_PP_DEC(BOOST_PHOENIX_ITERATION)
>(fusion::begin(flat_view))
                                 )
                             )
@@ -164,4 +162,4 @@
 
 #endif
 
-//#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/try_catch_eval.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/try_catch_eval.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/try_catch_eval.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,7 +1,7 @@
 
-#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_STATEMENT_DETAIL_TRY_CATCH_EVAL_HPP
-#define PHOENIX_STATEMENT_DETAIL_TRY_CATCH_EVAL_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_STATEMENT_DETAIL_TRY_CATCH_EVAL_HPP
+#define BOOST_PHOENIX_STATEMENT_DETAIL_TRY_CATCH_EVAL_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
@@ -10,15 +10,15 @@
 #endif
 #else
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_STATEMENT_DETAIL_TRY_CATCH_EVAL_HPP
-#define PHOENIX_STATEMENT_DETAIL_TRY_CATCH_EVAL_HPP
+#ifndef BOOST_PHOENIX_STATEMENT_DETAIL_TRY_CATCH_EVAL_HPP
+#define BOOST_PHOENIX_STATEMENT_DETAIL_TRY_CATCH_EVAL_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/try_catch_eval_" PHOENIX_LIMIT_STR ".hpp")
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/try_catch_eval_" BOOST_PHOENIX_LIMIT_STR ".hpp")
 #endif
 
 /*==============================================================================
@@ -29,11 +29,11 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(preserve: 1)
 #endif
 
- #define PHOENIX_TRY_CATCH_EVAL_R(Z, N, DATA) \
+ #define BOOST_PHOENIX_TRY_CATCH_EVAL_R(Z, N, DATA) \
             catch( \
                 typename proto::result_of::value< \
                     typename proto::result_of::child_c< \
@@ -48,14 +48,14 @@
     /**/
 
 
-#define PHOENIX_ITERATION_PARAMS \
- (3, (1, PHOENIX_CATCH_LIMIT, \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (1, BOOST_PHOENIX_CATCH_LIMIT, \
         <boost/phoenix/statement/detail/try_catch_eval.hpp>))
-#include PHOENIX_ITERATE()
+#include BOOST_PHOENIX_ITERATE()
 
- #undef PHOENIX_TRY_CATCH_EVAL_R
+ #undef BOOST_PHOENIX_TRY_CATCH_EVAL_R
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
@@ -63,46 +63,46 @@
 
 #else
 
- template <typename Context, typename Try, PHOENIX_typename_A>
+ template <typename Context, typename Try, BOOST_PHOENIX_typename_A>
         typename boost::enable_if<
             proto::matches<
- BOOST_PP_CAT(A, BOOST_PP_DEC(PHOENIX_ITERATION))
+ BOOST_PP_CAT(A, BOOST_PP_DEC(BOOST_PHOENIX_ITERATION))
               , rule::catch_
>
           , result_type
>::type
- operator()(Context & ctx, Try const & try_, PHOENIX_A_const_ref_a) const
+ operator()(Context & ctx, Try const & try_, BOOST_PHOENIX_A_const_ref_a) const
         {
             try
             {
                 eval(proto::child_c<0>(try_), ctx);
             }
- BOOST_PP_REPEAT(PHOENIX_ITERATION, PHOENIX_TRY_CATCH_EVAL_R, _)
+ BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, BOOST_PHOENIX_TRY_CATCH_EVAL_R, _)
         }
 
- template <typename Context, typename Try, PHOENIX_typename_A>
+ template <typename Context, typename Try, BOOST_PHOENIX_typename_A>
         typename boost::disable_if<
             proto::matches<
- BOOST_PP_CAT(A, BOOST_PP_DEC(PHOENIX_ITERATION))
+ BOOST_PP_CAT(A, BOOST_PP_DEC(BOOST_PHOENIX_ITERATION))
               , rule::catch_
>
           , result_type
>::type
- operator()(Context & ctx, Try const & try_, PHOENIX_A_const_ref_a) const
+ operator()(Context & ctx, Try const & try_, BOOST_PHOENIX_A_const_ref_a) const
         {
             try
             {
                 eval(proto::child_c<0>(try_), ctx);
             }
             BOOST_PP_REPEAT(
- BOOST_PP_DEC(PHOENIX_ITERATION)
- , PHOENIX_TRY_CATCH_EVAL_R, _
+ BOOST_PP_DEC(BOOST_PHOENIX_ITERATION)
+ , BOOST_PHOENIX_TRY_CATCH_EVAL_R, _
             )
             catch(...)
             {
                 eval(
                     proto::child_c<0>(
- BOOST_PP_CAT(a, BOOST_PP_DEC(PHOENIX_ITERATION))
+ BOOST_PP_CAT(a, BOOST_PP_DEC(BOOST_PHOENIX_ITERATION))
                     )
                   , ctx);
             }
@@ -110,4 +110,4 @@
 
 #endif
 
-#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/try_catch_expression.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/try_catch_expression.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/try_catch_expression.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,7 +1,7 @@
 
-#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
-#ifndef PHOENIX_STATEMENT_DETAIL_TRY_CATCH_EXPRESSION_HPP
-#define PHOENIX_STATEMENT_DETAIL_TRY_CATCH_EXPRESSION_HPP
+#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef BOOST_PHOENIX_STATEMENT_DETAIL_TRY_CATCH_EXPRESSION_HPP
+#define BOOST_PHOENIX_STATEMENT_DETAIL_TRY_CATCH_EXPRESSION_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
@@ -10,15 +10,15 @@
 #endif
 #else
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#ifndef PHOENIX_STATEMENT_DETAIL_TRY_CATCH_EXPRESSION_HPP
-#define PHOENIX_STATEMENT_DETAIL_TRY_CATCH_EXPRESSION_HPP
+#ifndef BOOST_PHOENIX_STATEMENT_DETAIL_TRY_CATCH_EXPRESSION_HPP
+#define BOOST_PHOENIX_STATEMENT_DETAIL_TRY_CATCH_EXPRESSION_HPP
 
 #include <boost/phoenix/support/iterate.hpp>
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/try_catch_expression_" PHOENIX_LIMIT_STR ".hpp")
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/try_catch_expression_" BOOST_PHOENIX_LIMIT_STR ".hpp")
 #endif
 
 /*==============================================================================
@@ -29,16 +29,16 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(preserve: 1)
 #endif
 
-#define PHOENIX_ITERATION_PARAMS \
- (3, (0, PHOENIX_CATCH_LIMIT, \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (0, BOOST_PHOENIX_CATCH_LIMIT, \
     <boost/phoenix/statement/detail/try_catch_expression.hpp>))
-#include PHOENIX_ITERATE()
+#include BOOST_PHOENIX_ITERATE()
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
 #pragma wave option(output: null)
 #endif
 
@@ -46,16 +46,25 @@
 
 #else
 
- template <typename Try BOOST_PP_COMMA_IF(PHOENIX_ITERATION) PHOENIX_typename_A>
- struct try_catch<Try BOOST_PP_COMMA_IF(PHOENIX_ITERATION) PHOENIX_A>
+ template <
+ typename Try
+ BOOST_PP_COMMA_IF(BOOST_PHOENIX_ITERATION)
+ BOOST_PHOENIX_typename_A
+ >
+ struct try_catch<
+ Try
+ BOOST_PP_COMMA_IF(BOOST_PHOENIX_ITERATION)
+ BOOST_PHOENIX_A
+ >
             : expr_ext<
                 try_catch_actor
               , tag::try_catch
               , Try
- BOOST_PP_COMMA_IF(PHOENIX_ITERATION) PHOENIX_A>
+ BOOST_PP_COMMA_IF(BOOST_PHOENIX_ITERATION) BOOST_PHOENIX_A
+ >
         {};
     /**/
 
 #endif
 
-#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES
+#endif // BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,15 +5,15 @@
     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_STATEMENT_DO_WHILE_HPP
-#define PHOENIX_STATEMENT_DO_WHILE_HPP
+#ifndef BOOST_PHOENIX_STATEMENT_DO_WHILE_HPP
+#define BOOST_PHOENIX_STATEMENT_DO_WHILE_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/call.hpp>
 #include <boost/phoenix/core/expression.hpp>
 #include <boost/phoenix/core/meta_grammar.hpp>
 
-PHOENIX_DEFINE_EXPRESSION(
+BOOST_PHOENIX_DEFINE_EXPRESSION(
     (boost)(phoenix)(do_while)
   , (meta_grammar) // Cond
     (meta_grammar) // Do

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,15 +5,15 @@
     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_STATEMENT_FOR_HPP
-#define PHOENIX_STATEMENT_FOR_HPP
+#ifndef BOOST_PHOENIX_STATEMENT_FOR_HPP
+#define BOOST_PHOENIX_STATEMENT_FOR_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/call.hpp>
 #include <boost/phoenix/core/expression.hpp>
 #include <boost/phoenix/core/meta_grammar.hpp>
     
-PHOENIX_DEFINE_EXPRESSION(
+BOOST_PHOENIX_DEFINE_EXPRESSION(
     (boost)(phoenix)(for_)
   , (meta_grammar) // Cond
     (meta_grammar) // Init

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_STATEMENT_IF_HPP
-#define PHOENIX_STATEMENT_IF_HPP
+#ifndef BOOST_PHOENIX_STATEMENT_IF_HPP
+#define BOOST_PHOENIX_STATEMENT_IF_HPP
 
 #include <boost/config.hpp>
 #include <boost/phoenix/core/limits.hpp>
@@ -25,14 +25,14 @@
     template <typename> struct if_actor;
 }}
     
-PHOENIX_DEFINE_EXPRESSION_EXT(
+BOOST_PHOENIX_DEFINE_EXPRESSION_EXT(
     if_actor
   , (boost)(phoenix)(if_)
   , (meta_grammar) // Cond
     (meta_grammar) // Then
 )
     
-PHOENIX_DEFINE_EXPRESSION(
+BOOST_PHOENIX_DEFINE_EXPRESSION(
     (boost)(phoenix)(if_else_statement)
   , (meta_grammar) // Cond
     (meta_grammar) // Then

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -7,8 +7,8 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#ifndef PHOENIX_STATEMENT_SEQUENCE_HPP
-#define PHOENIX_STATEMENT_SEQUENCE_HPP
+#ifndef BOOST_PHOENIX_STATEMENT_SEQUENCE_HPP
+#define BOOST_PHOENIX_STATEMENT_SEQUENCE_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/expression.hpp>

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_STATEMENT_SWITCH_HPP
-#define PHOENIX_STATEMENT_SWITCH_HPP
+#ifndef BOOST_PHOENIX_STATEMENT_SWITCH_HPP
+#define BOOST_PHOENIX_STATEMENT_SWITCH_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/call.hpp>
@@ -16,13 +16,13 @@
 #include <boost/phoenix/support/iterate.hpp>
 #include <boost/proto/make_expr.hpp>
 
-PHOENIX_DEFINE_EXPRESSION(
+BOOST_PHOENIX_DEFINE_EXPRESSION(
     (boost)(phoenix)(switch_case)
   , (proto::terminal<proto::_>)
     (meta_grammar)
 )
 
-PHOENIX_DEFINE_EXPRESSION(
+BOOST_PHOENIX_DEFINE_EXPRESSION(
     (boost)(phoenix)(switch_default_case)
   , (meta_grammar)
 )
@@ -100,7 +100,7 @@
     }
 }}
 
-PHOENIX_DEFINE_EXPRESSION(
+BOOST_PHOENIX_DEFINE_EXPRESSION(
     (boost)(phoenix)(switch_)
   , (meta_grammar) // Cond
     (detail::switch_grammar) // Cases

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -6,8 +6,8 @@
     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_STATEMENT_THROW_HPP
-#define PHOENIX_STATEMENT_THROW_HPP
+#ifndef BOOST_PHOENIX_STATEMENT_THROW_HPP
+#define BOOST_PHOENIX_STATEMENT_THROW_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/actor.hpp>

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -7,8 +7,8 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#ifndef PHOENIX_STATEMENT_TRY_CATCH_HPP
-#define PHOENIX_STATEMENT_TRY_CATCH_HPP
+#ifndef BOOST_PHOENIX_STATEMENT_TRY_CATCH_HPP
+#define BOOST_PHOENIX_STATEMENT_TRY_CATCH_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/call.hpp>
@@ -39,7 +39,7 @@
     {
         template <
             typename Try
- , PHOENIX_typename_A_void(PHOENIX_CATCH_LIMIT)
+ , BOOST_PHOENIX_typename_A_void(BOOST_PHOENIX_CATCH_LIMIT)
           , typename Dummy = void
>
         struct try_catch;

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-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,15 +5,15 @@
     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_STATEMENT_WHILE_HPP
-#define PHOENIX_STATEMENT_WHILE_HPP
+#ifndef BOOST_PHOENIX_STATEMENT_WHILE_HPP
+#define BOOST_PHOENIX_STATEMENT_WHILE_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/call.hpp>
 #include <boost/phoenix/core/expression.hpp>
 #include <boost/phoenix/core/meta_grammar.hpp>
 
-PHOENIX_DEFINE_EXPRESSION(
+BOOST_PHOENIX_DEFINE_EXPRESSION(
     (boost)(phoenix)(while_)
   , (meta_grammar) // Cond
     (meta_grammar) // Do

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -6,8 +6,8 @@
     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_STL_HPP
-#define PHOENIX_STL_HPP
+#ifndef BOOST_PHOENIX_STL_HPP
+#define BOOST_PHOENIX_STL_HPP
 
 #include <boost/phoenix/stl/algorithm.hpp>
 #include <boost/phoenix/stl/container.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -7,11 +7,11 @@
     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_STL_ALGORITHM_HPP
-#define PHOENIX_STL_ALGORITHM_HPP
+#ifndef BOOST_PHOENIX_STL_ALGORITHM_HPP
+#define BOOST_PHOENIX_STL_ALGORITHM_HPP
 
 #include <boost/phoenix/stl/algorithm/iteration.hpp>
 #include <boost/phoenix/stl/algorithm/querying.hpp>
 #include <boost/phoenix/stl/algorithm/transformation.hpp>
 
-#endif // PHOENIX_STL_ALGORITHM_HPP
+#endif // BOOST_PHOENIX_STL_ALGORITHM_HPP

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/begin.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/begin.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/begin.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -7,8 +7,8 @@
 //
 // Modeled after range_ex, Copyright 2004 Eric Niebler
 
-#ifndef PHOENIX_ALGORITHM_DETAIL_BEGIN_HPP
-#define PHOENIX_ALGORITHM_DETAIL_BEGIN_HPP
+#ifndef BOOST_PHOENIX_ALGORITHM_DETAIL_BEGIN_HPP
+#define BOOST_PHOENIX_ALGORITHM_DETAIL_BEGIN_HPP
 
 #include <boost/range/result_iterator.hpp>
 #include <boost/range/begin.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/decay_array.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/decay_array.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/decay_array.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -7,8 +7,8 @@
 //
 // Modeled after range_ex, Copyright 2004 Eric Niebler
 
-#ifndef PHOENIX_ALGORITHM_DETAIL_DECAY_ARRAY_HPP
-#define PHOENIX_ALGORITHM_DETAIL_DECAY_ARRAY_HPP
+#ifndef BOOST_PHOENIX_ALGORITHM_DETAIL_DECAY_ARRAY_HPP
+#define BOOST_PHOENIX_ALGORITHM_DETAIL_DECAY_ARRAY_HPP
 
 namespace boost { namespace phoenix {
 namespace detail

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/end.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/end.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/end.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -7,8 +7,8 @@
 //
 // Modeled after range_ex, Copyright 2004 Eric Niebler
 
-#ifndef PHOENIX_ALGORITHM_DETAIL_END_HPP
-#define PHOENIX_ALGORITHM_DETAIL_END_HPP
+#ifndef BOOST_PHOENIX_ALGORITHM_DETAIL_END_HPP
+#define BOOST_PHOENIX_ALGORITHM_DETAIL_END_HPP
 
 #include <boost/range/result_iterator.hpp>
 #include <boost/range/end.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_equal_range.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_equal_range.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_equal_range.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -16,8 +16,8 @@
 #pragma once
 #endif
 
-#ifndef HAS_EQUAL_RANGE_EN_14_12_2004
-#define HAS_EQUAL_RANGE_EN_14_12_2004
+#ifndef BOOST_PHOENIX_HAS_EQUAL_RANGE_EN_14_12_2004
+#define BOOST_PHOENIX_HAS_EQUAL_RANGE_EN_14_12_2004
 
 #include <boost/mpl/or.hpp>
 #include "./is_std_map.hpp"

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_find.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_find.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_find.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -12,12 +12,8 @@
 //
 /////////////////////////////////////////////////////////////////////////////
 
-#if defined(_MSC_VER) && _MSC_VER >= 1000
-#pragma once
-#endif
-
-#ifndef HAS_FIND_EN_14_12_2004
-#define HAS_FIND_EN_14_12_2004
+#ifndef BOOST_PHOENIX_HAS_FIND_EN_14_12_2004
+#define BOOST_PHOENIX_HAS_FIND_EN_14_12_2004
 
 #include <boost/mpl/or.hpp>
 #include "./is_std_map.hpp"

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_lower_bound.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_lower_bound.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_lower_bound.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -16,8 +16,8 @@
 #pragma once
 #endif
 
-#ifndef HAS_LOWER_BOUND_EN_14_12_2004
-#define HAS_LOWER_BOUND_EN_14_12_2004
+#ifndef BOOST_PHOENIX_HAS_LOWER_BOUND_EN_14_12_2004
+#define BOOST_PHOENIX_HAS_LOWER_BOUND_EN_14_12_2004
 
 #include <boost/mpl/or.hpp>
 #include "./is_std_map.hpp"

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_remove.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_remove.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_remove.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -12,12 +12,8 @@
 //
 /////////////////////////////////////////////////////////////////////////////
 
-#if defined(_MSC_VER) && _MSC_VER >= 1000
-#pragma once
-#endif
-
-#ifndef HAS_REMOVE_EN_14_12_2004
-#define HAS_REMOVE_EN_14_12_2004
+#ifndef BOOST_PHOENIX_HAS_REMOVE_EN_14_12_2004
+#define BOOST_PHOENIX_HAS_REMOVE_EN_14_12_2004
 
 #include "./is_std_list.hpp"
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_remove_if.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_remove_if.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_remove_if.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -16,8 +16,8 @@
 #pragma once
 #endif
 
-#ifndef HAS_REMOVE_IF_EN_14_12_2004
-#define HAS_REMOVE_IF_EN_14_12_2004
+#ifndef BOOST_PHOENIX_HAS_REMOVE_IF_EN_14_12_2004
+#define BOOST_PHOENIX_HAS_REMOVE_IF_EN_14_12_2004
 
 #include "./is_std_list.hpp"
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_reverse.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_reverse.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_reverse.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -16,8 +16,8 @@
 #pragma once
 #endif
 
-#ifndef HAS_REVERSE_EN_14_12_2004
-#define HAS_REVERSE_EN_14_12_2004
+#ifndef BOOST_PHOENIX_HAS_REVERSE_EN_14_12_2004
+#define BOOST_PHOENIX_HAS_REVERSE_EN_14_12_2004
 
 #include "./is_std_list.hpp"
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_sort.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_sort.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_sort.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -12,12 +12,8 @@
 //
 /////////////////////////////////////////////////////////////////////////////
 
-#if defined(_MSC_VER) && _MSC_VER >= 1000
-#pragma once
-#endif
-
-#ifndef HAS_SORT_EN_14_12_2004
-#define HAS_SORT_EN_14_12_2004
+#ifndef BOOST_PHOENIX_HAS_SORT_EN_14_12_2004
+#define BOOST_PHOENIX_HAS_SORT_EN_14_12_2004
 
 #include "./is_std_list.hpp"
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_unique.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_unique.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_unique.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -16,8 +16,8 @@
 #pragma once
 #endif
 
-#ifndef HAS_UNIQUE_EN_14_12_2004
-#define HAS_UNIQUE_EN_14_12_2004
+#ifndef BOOST_PHOENIX_HAS_UNIQUE_EN_14_12_2004
+#define BOOST_PHOENIX_HAS_UNIQUE_EN_14_12_2004
 
 #include "./is_std_list.hpp"
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_upper_bound.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_upper_bound.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/has_upper_bound.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -12,12 +12,8 @@
 //
 /////////////////////////////////////////////////////////////////////////////
 
-#if defined(_MSC_VER) && _MSC_VER >= 1000
-#pragma once
-#endif
-
-#ifndef HAS_UPPER_BOUND_EN_14_12_2004
-#define HAS_UPPER_BOUND_EN_14_12_2004
+#ifndef BOOST_PHOENIX_HAS_UPPER_BOUND_EN_14_12_2004
+#define BOOST_PHOENIX_HAS_UPPER_BOUND_EN_14_12_2004
 
 #include <boost/mpl/or.hpp>
 #include "./is_std_map.hpp"

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/is_std_hash_map.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/is_std_hash_map.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/is_std_hash_map.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -12,12 +12,8 @@
 //
 /////////////////////////////////////////////////////////////////////////////
 
-#if defined(_MSC_VER) && _MSC_VER >= 1000
-# pragma once
-#endif
-
-#ifndef IS_STD_HASH_MAP_EN_16_12_2004
-#define IS_STD_HASH_MAP_EN_16_12_2004
+#ifndef BOOST_PHOENIX_IS_STD_HASH_MAP_EN_16_12_2004
+#define BOOST_PHOENIX_IS_STD_HASH_MAP_EN_16_12_2004
 
 #include <boost/mpl/bool.hpp>
 #include "./std_hash_map_fwd.hpp"

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/is_std_hash_set.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/is_std_hash_set.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/is_std_hash_set.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -12,12 +12,8 @@
 //
 /////////////////////////////////////////////////////////////////////////////
 
-#if defined(_MSC_VER) && _MSC_VER >= 1000
-# pragma once
-#endif
-
-#ifndef IS_STD_HASH_SET_EN_16_12_2004
-#define IS_STD_HASH_SET_EN_16_12_2004
+#ifndef BOOST_PHOENIX_IS_STD_HASH_SET_EN_16_12_2004
+#define BOOST_PHOENIX_IS_STD_HASH_SET_EN_16_12_2004
 
 #include <boost/mpl/bool.hpp>
 #include "./std_hash_set_fwd.hpp"

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/is_std_list.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/is_std_list.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/is_std_list.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -12,12 +12,8 @@
 //
 /////////////////////////////////////////////////////////////////////////////
 
-#if defined(_MSC_VER) && _MSC_VER >= 1000
-# pragma once
-#endif
-
-#ifndef IS_STD_LIST_EN_16_12_2004
-#define IS_STD_LIST_EN_16_12_2004
+#ifndef BOOST_PHOENIX_IS_STD_LIST_EN_16_12_2004
+#define BOOST_PHOENIX_IS_STD_LIST_EN_16_12_2004
 
 #include <boost/mpl/bool.hpp>
 #include <boost/detail/container_fwd.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/is_std_map.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/is_std_map.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/is_std_map.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -12,12 +12,8 @@
 //
 /////////////////////////////////////////////////////////////////////////////
 
-#if defined(_MSC_VER) && _MSC_VER >= 1000
-# pragma once
-#endif
-
-#ifndef IS_STD_MAP_EN_16_12_2004
-#define IS_STD_MAP_EN_16_12_2004
+#ifndef BOOST_PHOENIX_IS_STD_MAP_EN_16_12_2004
+#define BOOST_PHOENIX_IS_STD_MAP_EN_16_12_2004
 
 #include <boost/mpl/bool.hpp>
 #include <boost/detail/container_fwd.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/is_std_set.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/is_std_set.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/is_std_set.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -16,8 +16,8 @@
 # pragma once
 #endif
 
-#ifndef IS_STD_SET_EN_16_12_2004
-#define IS_STD_SET_EN_16_12_2004
+#ifndef BOOST_PHOENIX_IS_STD_SET_EN_16_12_2004
+#define BOOST_PHOENIX_IS_STD_SET_EN_16_12_2004
 
 #include <boost/mpl/bool.hpp>
 #include <boost/detail/container_fwd.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/std_hash_map_fwd.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/std_hash_map_fwd.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/std_hash_map_fwd.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -16,8 +16,8 @@
 # pragma once
 #endif
 
-#ifndef STD_HASH_MAP_FWD_EN_16_12_2004
-#define STD_HASH_MAP_FWD_EN_16_12_2004
+#ifndef BOOST_PHOENIX_STD_HASH_MAP_FWD_EN_16_12_2004
+#define BOOST_PHOENIX_STD_HASH_MAP_FWD_EN_16_12_2004
 
 #include <boost/config.hpp>
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/std_hash_set_fwd.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/std_hash_set_fwd.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/detail/std_hash_set_fwd.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -12,12 +12,8 @@
 //
 /////////////////////////////////////////////////////////////////////////////
 
-#if defined(_MSC_VER) && _MSC_VER >= 1000
-# pragma once
-#endif
-
-#ifndef STD_HASH_SET_FWD_EN_16_12_2004
-#define STD_HASH_SET_FWD_EN_16_12_2004
+#ifndef BOOST_PHOENIX_STD_HASH_SET_FWD_EN_16_12_2004
+#define BOOST_PHOENIX_STD_HASH_SET_FWD_EN_16_12_2004
 
 #include <boost/config.hpp>
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/iteration.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/iteration.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/iteration.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -8,8 +8,8 @@
 //
 // Modeled after range_ex, Copyright 2004 Eric Niebler
 
-#ifndef PHOENIX_ALGORITHM_ITERATION_HPP
-#define PHOENIX_ALGORITHM_ITERATION_HPP
+#ifndef BOOST_PHOENIX_ALGORITHM_ITERATION_HPP
+#define BOOST_PHOENIX_ALGORITHM_ITERATION_HPP
 
 #include <algorithm>
 #include <numeric>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/querying.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/querying.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/querying.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -9,8 +9,8 @@
 //
 // Modeled after range_ex, Copyright 2004 Eric Niebler
 
-#ifndef PHOENIX_ALGORITHM_QUERYING_HPP
-#define PHOENIX_ALGORITHM_QUERYING_HPP
+#ifndef BOOST_PHOENIX_ALGORITHM_QUERYING_HPP
+#define BOOST_PHOENIX_ALGORITHM_QUERYING_HPP
 
 #include <algorithm>
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/transformation.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/transformation.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/algorithm/transformation.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -8,8 +8,8 @@
 //
 // Modeled after range_ex, Copyright 2004 Eric Niebler
 
-#ifndef PHOENIX_ALGORITHM_TRANSFORMATION_HPP
-#define PHOENIX_ALGORITHM_TRANSFORMATION_HPP
+#ifndef BOOST_PHOENIX_ALGORITHM_TRANSFORMATION_HPP
+#define BOOST_PHOENIX_ALGORITHM_TRANSFORMATION_HPP
 
 #include <algorithm>
 #include <numeric>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/container.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/container.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/container.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,9 +5,9 @@
     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_STL_CONTAINER_HPP
-#define PHOENIX_STL_CONTAINER_HPP
+#ifndef BOOST_PHOENIX_STL_CONTAINER_HPP
+#define BOOST_PHOENIX_STL_CONTAINER_HPP
 
 #include <boost/phoenix/stl/container/container.hpp>
 
-#endif // PHOENIX_STL_CONTAINER_HPP
+#endif // BOOST_PHOENIX_STL_CONTAINER_HPP

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/container/container.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/container/container.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/container/container.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_STL_CONTAINER_CONTAINER_HPP
-#define PHOENIX_STL_CONTAINER_CONTAINER_HPP
+#ifndef BOOST_PHOENIX_STL_CONTAINER_CONTAINER_HPP
+#define BOOST_PHOENIX_STL_CONTAINER_CONTAINER_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/mpl/and.hpp>
@@ -816,4 +816,4 @@
 
 }} // namespace boost::phoenix
 
-#endif // PHOENIX_STL_CONTAINERS_HPP
+#endif // BOOST_PHOENIX_STL_CONTAINERS_HPP

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/stl/container/detail/container.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/stl/container/detail/container.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/stl/container/detail/container.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     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_CONTAINER_DETAIL_CONTAINER_HPP
-#define PHOENIX_CONTAINER_DETAIL_CONTAINER_HPP
+#ifndef BOOST_PHOENIX_CONTAINER_DETAIL_CONTAINER_HPP
+#define BOOST_PHOENIX_CONTAINER_DETAIL_CONTAINER_HPP
 
 #include <utility>
 #include <boost/mpl/eval_if.hpp>
@@ -170,4 +170,4 @@
 
 }}} // namespace boost::phoenix::stl
 
-#endif // PHOENIX_STL_CONTAINER_TRAITS_HPP
+#endif // BOOST_PHOENIX_STL_CONTAINER_TRAITS_HPP

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/support/detail/iterate.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/support/detail/iterate.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/support/detail/iterate.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -9,79 +9,79 @@
 
 #include <boost/preprocessor/tuple/elem.hpp>
 
-#ifndef PHOENIX_ITERATION_PARAMS
-#error "PHOENIX_ITERATION_PARAMS not defined"
+#ifndef BOOST_PHOENIX_ITERATION_PARAMS
+#error "BOOST_PHOENIX_ITERATION_PARAMS not defined"
 #endif
 
-#define PHOENIX_ITERATION_PARAMS_SIZE \
- BOOST_PP_TUPLE_ELEM(2, 0, PHOENIX_ITERATION_PARAMS) \
+#define BOOST_PHOENIX_ITERATION_PARAMS_SIZE \
+ BOOST_PP_TUPLE_ELEM(2, 0, BOOST_PHOENIX_ITERATION_PARAMS) \
 /**/
 
-#define PHOENIX_ITERATION_TUPLE \
- BOOST_PP_TUPLE_ELEM(2, 1, PHOENIX_ITERATION_PARAMS) \
+#define BOOST_PHOENIX_ITERATION_TUPLE \
+ BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PHOENIX_ITERATION_PARAMS) \
 /**/
 
-#define PHOENIX_ITERATION_START \
+#define BOOST_PHOENIX_ITERATION_START \
     BOOST_PP_TUPLE_ELEM( \
- PHOENIX_ITERATION_PARAMS_SIZE, 0, PHOENIX_ITERATION_TUPLE) \
+ BOOST_PHOENIX_ITERATION_PARAMS_SIZE, 0, BOOST_PHOENIX_ITERATION_TUPLE) \
 /**/
 
-#define PHOENIX_ITERATION_END \
+#define BOOST_PHOENIX_ITERATION_END \
     BOOST_PP_TUPLE_ELEM( \
- PHOENIX_ITERATION_PARAMS_SIZE, 1, PHOENIX_ITERATION_TUPLE) \
+ BOOST_PHOENIX_ITERATION_PARAMS_SIZE, 1, BOOST_PHOENIX_ITERATION_TUPLE) \
 /**/
 
 
-#define PHOENIX_ITERATION_FILE() \
+#define BOOST_PHOENIX_ITERATION_FILE() \
     BOOST_PP_TUPLE_ELEM( \
- PHOENIX_ITERATION_PARAMS_SIZE, 2, PHOENIX_ITERATION_TUPLE) \
+ BOOST_PHOENIX_ITERATION_PARAMS_SIZE, 2, BOOST_PHOENIX_ITERATION_TUPLE) \
 /**/
 
-#if PHOENIX_ITERATION_PARAMS_SIZE == 3
+#if BOOST_PHOENIX_ITERATION_PARAMS_SIZE == 3
 
 #define BOOST_PP_ITERATION_PARAMS_1 \
- (3, (PHOENIX_ITERATION_START, PHOENIX_ITERATION_END, \
+ (3, (BOOST_PHOENIX_ITERATION_START, BOOST_PHOENIX_ITERATION_END, \
     <boost/phoenix/support/detail/iterate.hpp>)) \
 /**/
 
 #else
 
-#define PHOENIX_ITERATION_FLAG \
+#define BOOST_PHOENIX_ITERATION_FLAG \
     BOOST_PP_TUPLE_ELEM( \
- PHOENIX_ITERATION_PARAMS_SIZE, 3, PHOENIX_ITERATION_TUPLE) \
+ BOOST_PHOENIX_ITERATION_PARAMS_SIZE, 3, BOOST_PHOENIX_ITERATION_TUPLE) \
 /**/
 
 #define BOOST_PP_ITERATION_PARAMS_1 \
- (4, (PHOENIX_ITERATION_START, PHOENIX_ITERATION_END, \
+ (4, (BOOST_PHOENIX_ITERATION_START, BOOST_PHOENIX_ITERATION_END, \
     <boost/phoenix/support/detail/iterate.hpp>, \
- PHOENIX_ITERATION_FLAG)) \
+ BOOST_PHOENIX_ITERATION_FLAG)) \
 /**/
 
 #endif
 
 #include BOOST_PP_ITERATE()
 
-#undef PHOENIX_ITERATION_PARAMS_SIZE
-#undef PHOENIX_ITERATION_TUPLE
-#undef PHOENIX_ITERATION_START
-#undef PHOENIX_ITERATION_END
-#undef PHOENIX_ITERATION_PARAMS
+#undef BOOST_PHOENIX_ITERATION_PARAMS_SIZE
+#undef BOOST_PHOENIX_ITERATION_TUPLE
+#undef BOOST_PHOENIX_ITERATION_START
+#undef BOOST_PHOENIX_ITERATION_END
+#undef BOOST_PHOENIX_ITERATION_PARAMS
 
 #else
 
-#undef PHOENIX_IS_ITERATING
-#define PHOENIX_IS_ITERATING 1
+#undef BOOST_PHOENIX_IS_ITERATING
+#define BOOST_PHOENIX_IS_ITERATING 1
 
 #include <boost/phoenix/support/detail/iterate_undef.hpp>
 #include <boost/phoenix/support/detail/iterate_define.hpp>
 
 
-#include PHOENIX_ITERATION_FILE()
+#include BOOST_PHOENIX_ITERATION_FILE()
 
-#undef PHOENIX_ITERATION
+#undef BOOST_PHOENIX_ITERATION
 
-#undef PHOENIX_IS_ITERATING
-#define PHOENIX_IS_ITERATING 0
+#undef BOOST_PHOENIX_IS_ITERATING
+#define BOOST_PHOENIX_IS_ITERATING 0
 
 #include <boost/phoenix/support/detail/iterate_undef.hpp>
 #include <boost/phoenix/support/detail/iterate_define.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/support/detail/iterate_define.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/support/detail/iterate_define.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/support/detail/iterate_define.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,41 +5,41 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
-#define PHOENIX_typename_A(N) \
+#define BOOST_PHOENIX_typename_A(N) \
     BOOST_PP_ENUM_PARAMS(N, typename A) \
 /**/
 
-#define PHOENIX_typename_A_void(N) \
+#define BOOST_PHOENIX_typename_A_void(N) \
     BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(N, typename A, void) \
 /**/
 
-#define PHOENIX_A(N) \
+#define BOOST_PHOENIX_A(N) \
     BOOST_PP_ENUM_PARAMS(N, A) \
 /**/
 
-#define PHOENIX_A_ref(N) \
+#define BOOST_PHOENIX_A_ref(N) \
     BOOST_PP_ENUM_BINARY_PARAMS(N, A, & BOOST_PP_INTERCEPT) \
 /**/
 
-#define PHOENIX_A_const_ref(N) \
+#define BOOST_PHOENIX_A_const_ref(N) \
     BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& BOOST_PP_INTERCEPT) \
 /**/
 
-#define PHOENIX_A_a(N) \
+#define BOOST_PHOENIX_A_a(N) \
     BOOST_PP_ENUM_BINARY_PARAMS(N, A, a) \
 /**/
 
-#define PHOENIX_A_ref_a(N) \
+#define BOOST_PHOENIX_A_ref_a(N) \
     BOOST_PP_ENUM_BINARY_PARAMS(N, A, & a) \
 /**/
 
-#define PHOENIX_A_const_ref_a(N) \
+#define BOOST_PHOENIX_A_const_ref_a(N) \
     BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& a) \
 /**/
 
-#define PHOENIX_a(N) \
+#define BOOST_PHOENIX_a(N) \
     BOOST_PP_ENUM_PARAMS(N, a) \
 /**/
 
@@ -56,100 +56,100 @@
 #include <boost/preprocessor/seq/size.hpp>
 #include <boost/preprocessor/tuple/elem.hpp>
 
-#define PHOENIX_ITERATION \
+#define BOOST_PHOENIX_ITERATION \
     BOOST_PP_ITERATION() \
 /**/
 
-#define PHOENIX_typename_A \
- BOOST_PP_ENUM_PARAMS(PHOENIX_ITERATION, typename A) \
+#define BOOST_PHOENIX_typename_A \
+ BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, typename A) \
 /**/
 
-#define PHOENIX_typename_A_void \
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(PHOENIX_ITERATION, typename A, void) \
+#define BOOST_PHOENIX_typename_A_void \
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(BOOST_PHOENIX_ITERATION, typename A, void)
 /**/
 
-#define PHOENIX_A \
- BOOST_PP_ENUM_PARAMS(PHOENIX_ITERATION, A) \
+#define BOOST_PHOENIX_A \
+ BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, A) \
 /**/
 
-#define PHOENIX_A_ref \
- BOOST_PP_ENUM_BINARY_PARAMS(PHOENIX_ITERATION, A, & BOOST_PP_INTERCEPT) \
+#define BOOST_PHOENIX_A_ref \
+ BOOST_PP_ENUM_BINARY_PARAMS(BOOST_PHOENIX_ITERATION, A, & BOOST_PP_INTERCEPT)\
 /**/
 
-#define PHOENIX_A_const_ref \
- BOOST_PP_ENUM_BINARY_PARAMS(PHOENIX_ITERATION, A, const& BOOST_PP_INTERCEPT)\
+#define BOOST_PHOENIX_A_const_ref \
+ BOOST_PP_ENUM_BINARY_PARAMS(BOOST_PHOENIX_ITERATION, A, const& BOOST_PP_INTERCEPT)\
 /**/
 
-#define PHOENIX_A_a \
- BOOST_PP_ENUM_BINARY_PARAMS(PHOENIX_ITERATION, A, a) \
+#define BOOST_PHOENIX_A_a \
+ BOOST_PP_ENUM_BINARY_PARAMS(BOOST_PHOENIX_ITERATION, A, a) \
 /**/
 
-#define PHOENIX_A_ref_a \
- BOOST_PP_ENUM_BINARY_PARAMS(PHOENIX_ITERATION, A, & a) \
+#define BOOST_PHOENIX_A_ref_a \
+ BOOST_PP_ENUM_BINARY_PARAMS(BOOST_PHOENIX_ITERATION, A, & a) \
 /**/
 
-#define PHOENIX_A_const_ref_a \
- BOOST_PP_ENUM_BINARY_PARAMS(PHOENIX_ITERATION, A, const& a) \
+#define BOOST_PHOENIX_A_const_ref_a \
+ BOOST_PP_ENUM_BINARY_PARAMS(BOOST_PHOENIX_ITERATION, A, const& a) \
 /**/
 
-#define PHOENIX_a \
- BOOST_PP_ENUM_PARAMS(PHOENIX_ITERATION, a) \
+#define BOOST_PHOENIX_a \
+ BOOST_PP_ENUM_PARAMS(BOOST_PHOENIX_ITERATION, a) \
 /**/
 
     /////////////////////////////////////////////////////////////////////////////
     // Begin Perfect Forward argument permutation calculation
     /////////////////////////////////////////////////////////////////////////////
-#define PHOENIX_M0_R(_, N, __) \
+#define BOOST_PHOENIX_M0_R(_, N, __) \
     (((A ## N)(&))((A ## N)(const&))) \
 /**/
 
-#define PHOENIX_M0 \
- BOOST_PP_REPEAT(PHOENIX_ITERATION, PHOENIX_M0_R, _) \
+#define BOOST_PHOENIX_M0 \
+ BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, BOOST_PHOENIX_M0_R, _) \
 /**/
 
-#define PHOENIX_M1_R_R(_, N, SEQ) \
+#define BOOST_PHOENIX_M1_R_R(_, N, SEQ) \
     BOOST_PP_SEQ_ELEM(N, SEQ) \
 /**/
 
-#define PHOENIX_M1_R(R, __, ___, ELEM) \
- (BOOST_PP_REPEAT(BOOST_PP_SEQ_SIZE(ELEM), PHOENIX_M1_R_R, ELEM)) \
+#define BOOST_PHOENIX_M1_R(R, __, ___, ELEM) \
+ (BOOST_PP_REPEAT(BOOST_PP_SEQ_SIZE(ELEM), BOOST_PHOENIX_M1_R_R, ELEM)) \
 /**/
 
-#define PHOENIX_M1(R, PRODUCT) \
+#define BOOST_PHOENIX_M1(R, PRODUCT) \
     ((BOOST_PP_SEQ_ENUM \
         (BOOST_PP_SEQ_FOR_EACH_I_R \
- (R, PHOENIX_M1_R, _, PRODUCT)))) \
+ (R, BOOST_PHOENIX_M1_R, _, PRODUCT)))) \
 /**/
 
-#define PHOENIX_PERM_SEQ \
- BOOST_PP_SEQ_FOR_EACH_PRODUCT(PHOENIX_M1, PHOENIX_M0) \
+#define BOOST_PHOENIX_PERM_SEQ \
+ BOOST_PP_SEQ_FOR_EACH_PRODUCT(BOOST_PHOENIX_M1, BOOST_PHOENIX_M0) \
 /**/
     ////////////////////////////////////////////////////////////////////////////
     // End
     ////////////////////////////////////////////////////////////////////////////
 
-#define PHOENIX_PERM_SIZE \
- BOOST_PP_SEQ_SIZE(PHOENIX_PERM_SEQ) \
+#define BOOST_PHOENIX_PERM_SIZE \
+ BOOST_PP_SEQ_SIZE(BOOST_PHOENIX_PERM_SEQ) \
 /**/
 
-#define PHOENIX_M2(_, N, TUPLE) \
- BOOST_PP_COMMA_IF(N) BOOST_PP_TUPLE_ELEM(PHOENIX_ITERATION, N, TUPLE) \
+#define BOOST_PHOENIX_M2(_, N, TUPLE) \
+ BOOST_PP_COMMA_IF(N) BOOST_PP_TUPLE_ELEM(BOOST_PHOENIX_ITERATION, N, TUPLE) \
 /**/
     
-#define PHOENIX_M3(_, N, TUPLE) \
- BOOST_PP_COMMA_IF(N) BOOST_PP_TUPLE_ELEM(PHOENIX_ITERATION, N, TUPLE) a ## N\
+#define BOOST_PHOENIX_M3(_, N, TUPLE) \
+ BOOST_PP_COMMA_IF(N) BOOST_PP_TUPLE_ELEM(BOOST_PHOENIX_ITERATION, N, TUPLE) a ## N\
 /**/
 
-#define PHOENIX_PERM_ELEM(N) \
- BOOST_PP_SEQ_ELEM(N, PHOENIX_PERM_SEQ) \
+#define BOOST_PHOENIX_PERM_ELEM(N) \
+ BOOST_PP_SEQ_ELEM(N, BOOST_PHOENIX_PERM_SEQ) \
 /**/
 
-#define PHOENIX_PERM_A(N) \
- BOOST_PP_REPEAT(PHOENIX_ITERATION, PHOENIX_M2, PHOENIX_PERM_ELEM(N)) \
+#define BOOST_PHOENIX_PERM_A(N) \
+ BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, BOOST_PHOENIX_M2, BOOST_PHOENIX_PERM_ELEM(N))\
 /**/
 
-#define PHOENIX_PERM_A_a(N) \
- BOOST_PP_REPEAT(PHOENIX_ITERATION, PHOENIX_M3, PHOENIX_PERM_ELEM(N)) \
+#define BOOST_PHOENIX_PERM_A_a(N) \
+ BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, BOOST_PHOENIX_M3, BOOST_PHOENIX_PERM_ELEM(N))\
 /**/
 
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/support/detail/iterate_undef.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/support/detail/iterate_undef.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/support/detail/iterate_undef.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,31 +5,31 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#undef PHOENIX_typename_A
-#undef PHOENIX_typename_A_void
-#undef PHOENIX_A
-#undef PHOENIX_A_a
-#undef PHOENIX_A_ref
-#undef PHOENIX_A_const_ref
-#undef PHOENIX_A_ref_a
-#undef PHOENIX_A_const_ref_a
-#undef PHOENIX_a
+#undef BOOST_PHOENIX_typename_A
+#undef BOOST_PHOENIX_typename_A_void
+#undef BOOST_PHOENIX_A
+#undef BOOST_PHOENIX_A_a
+#undef BOOST_PHOENIX_A_ref
+#undef BOOST_PHOENIX_A_const_ref
+#undef BOOST_PHOENIX_A_ref_a
+#undef BOOST_PHOENIX_A_const_ref_a
+#undef BOOST_PHOENIX_a
 
-#if PHOENIX_IS_ITERATING
+#if BOOST_PHOENIX_IS_ITERATING
 
 #undef PHEONIX_ITERATION
-#undef PHOENIX_PERM_A
-#undef PHOENIX_PERM_A_a
+#undef BOOST_PHOENIX_PERM_A
+#undef BOOST_PHOENIX_PERM_A_a
 
-#undef PHOENIX_M0_R
-#undef PHOENIX_M0
-#undef PHOENIX_M1_R_R
-#undef PHOENIX_M1_R
-#undef PHOENIX_M1
-#undef PHOENIX_M2
-#undef PHOENIX_M3
-#undef PHOENIX_PERM_SEQ
-#undef PHOENIX_PERM_SIZE
-#undef PHOENIX_PERM_ELEM
+#undef BOOST_PHOENIX_M0_R
+#undef BOOST_PHOENIX_M0
+#undef BOOST_PHOENIX_M1_R_R
+#undef BOOST_PHOENIX_M1_R
+#undef BOOST_PHOENIX_M1
+#undef BOOST_PHOENIX_M2
+#undef BOOST_PHOENIX_M3
+#undef BOOST_PHOENIX_PERM_SEQ
+#undef BOOST_PHOENIX_PERM_SIZE
+#undef BOOST_PHOENIX_PERM_ELEM
 
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/support/iterate.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/support/iterate.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/support/iterate.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -4,14 +4,14 @@
     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_SUPPORT_ITERATE_HPP
-#define PHOENIX_SUPPORT_ITERATE_HPP
+#ifndef BOOST_PHOENIX_SUPPORT_ITERATE_HPP
+#define BOOST_PHOENIX_SUPPORT_ITERATE_HPP
 
 #include <boost/preprocessor/iteration/iterate.hpp>
 
-#define PHOENIX_IS_ITERATING 0
+#define BOOST_PHOENIX_IS_ITERATING 0
 
-#define PHOENIX_ITERATE() \
+#define BOOST_PHOENIX_ITERATE() \
     <boost/phoenix/support/detail/iterate.hpp>
 
 #include <boost/phoenix/support/detail/iterate_define.hpp>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/support/preprocessor/round.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/support/preprocessor/round.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/support/preprocessor/round.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,8 +5,8 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#ifndef BOOST_PHOENIX_SUPPORT_PP_ROUND_HPP
-#define BOOST_PHOENIX_SUPPORT_PP_ROUND_HPP
+#ifndef BOOST_BOOST_PHOENIX_SUPPORT_PP_ROUND_HPP
+#define BOOST_BOOST_PHOENIX_SUPPORT_PP_ROUND_HPP
 
 #include <boost/preprocessor/cat.hpp>
 #include <boost/preprocessor/comparison/less.hpp>
@@ -14,13 +14,7 @@
 
 #define BOOST_PHOENIX_PP_ROUND_UP(N) \
       BOOST_PP_CAT(BOOST_PHOENIX_PP_DO_ROUND_UP_, N)() \
-/*
- BOOST_PP_IF( \
- BOOST_PP_LESS(N, 50) \
- , BOOST_PP_CAT(BOOST_PHOENIX_PP_DO_ROUND_UP_, N) \
- , BOOST_PHOENIX_PP_DO_ROUND_UP_50 \
- )() \
- */
+/**/
 
 #define BOOST_PHOENIX_PP_DO_ROUND_UP_0() 10
 #define BOOST_PHOENIX_PP_DO_ROUND_UP_1() 10

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/support/vector.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/support/vector.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/support/vector.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,5 +1,4 @@
-
-#if !PHOENIX_IS_ITERATING
+#if !BOOST_PHOENIX_IS_ITERATING
 
 /*==============================================================================
     Copyright (c) 2005-2010 Joel de Guzman
@@ -8,8 +7,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)
 ==============================================================================*/
-#ifndef PHOENIX_SUPPORT_VECTOR_HPP
-#define PHOENIX_SUPPORT_VECTOR_HPP
+
+
+#ifndef BOOST_PHOENIX_SUPPORT_VECTOR_HPP
+#define BOOST_PHOENIX_SUPPORT_VECTOR_HPP
 
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/support/iterate.hpp>
@@ -26,10 +27,10 @@
     (BOOST_PP_CAT(A, N), BOOST_PP_CAT(a, N)) \
 /**/
 
-#define PHOENIX_ITERATION_PARAMS \
- (3, (1, BOOST_PP_INC(PHOENIX_LIMIT), \
+#define BOOST_PHOENIX_ITERATION_PARAMS \
+ (3, (1, BOOST_PP_INC(BOOST_PHOENIX_LIMIT), \
         <boost/phoenix/support/vector.hpp>))
-#include PHOENIX_ITERATE()
+#include BOOST_PHOENIX_ITERATE()
 
 #undef M0
 #undef M1
@@ -41,17 +42,24 @@
 
 namespace boost { namespace phoenix
 {
- template <PHOENIX_typename_A>
- struct BOOST_PP_CAT(vector, PHOENIX_ITERATION)
+ template <BOOST_PHOENIX_typename_A>
+ struct BOOST_PP_CAT(vector, BOOST_PHOENIX_ITERATION)
     {
- BOOST_PP_REPEAT(PHOENIX_ITERATION, M0, _)
+ BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, M0, _)
     };
 }}
 
 BOOST_FUSION_ADAPT_TPL_STRUCT(
- BOOST_PP_REPEAT(PHOENIX_ITERATION, M1, _)
- , (BOOST_PP_CAT(boost::phoenix::vector, PHOENIX_ITERATION))BOOST_PP_REPEAT(PHOENIX_ITERATION, M1, _)
- , BOOST_PP_REPEAT(PHOENIX_ITERATION, M2, _)
+ BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, M1, _)
+ , (
+ BOOST_PP_CAT(
+ boost::phoenix::vector
+ , BOOST_PHOENIX_ITERATION
+ )
+ )
+ BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, M1, _)
+ , BOOST_PP_REPEAT(BOOST_PHOENIX_ITERATION, M2, _)
 )
 
 #endif
+

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/version.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/version.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/version.hpp 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -5,14 +5,14 @@
     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_VERSION_HPP
-#define PHOENIX_VERSION_HPP
+#ifndef BOOST_PHOENIX_VERSION_HPP
+#define BOOST_PHOENIX_VERSION_HPP
 
 ///////////////////////////////////////////////////////////////////////////////
 //
 // This is the version of the library
 //
 ///////////////////////////////////////////////////////////////////////////////
-#define BOOST_PHOENIX_VERSION 0x3000 // 3.0.0
+#define BOOST_BOOST_PHOENIX_VERSION 0x3000 // 3.0.0
 
 #endif

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/actor.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/actor.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/actor.qbk 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -10,10 +10,10 @@
 [section Actor]
 
 The `Actor` is the main concept behind the library. Actors are function objects.
-An actor can accept 0 to `PHOENIX_LIMIT` arguments.
+An actor can accept 0 to `BOOST_PHOENIX_LIMIT` arguments.
 
-[note You can set `PHOENIX_LIMIT`, the predefined maximum arity an
-actor can take. By default, `PHOENIX_LIMIT` is set to 10.]
+[note You can set `BOOST_PHOENIX_LIMIT`, the predefined maximum arity an
+actor can take. By default, `BOOST_PHOENIX_LIMIT` is set to 10.]
 
 Phoenix supplies an `actor` class template whose specializations
 model the `Actor` concept. `actor` has one template parameter, `Expr`,
@@ -49,12 +49,9 @@
     };
 
 The actor class accepts the arguments through a set of function call operators
-for 0 to `PHOENIX_LIMIT` arities (Don't worry about the details, for now. Note, for example,
+for 0 to `BOOST_PHOENIX_LIMIT` arities (Don't worry about the details, for now. Note, for example,
 that we skimp over the details regarding `return_type`). The arguments
 are then forwarded to the actor's `Expr` for evaluation.
 
-[heading TODO]
-add some notes about the extension possibilities
-
 [endsect]
 

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/actors.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/actors.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/actors.qbk 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -10,10 +10,10 @@
 [section Actor]
 
 The `Actor` is the main concept behind the library. Actors are function objects.
-An actor can accept 0 to `PHOENIX_LIMIT` arguments.
+An actor can accept 0 to `BOOST_PHOENIX_LIMIT` arguments.
 
-[note You can set `PHOENIX_LIMIT`, the predefined maximum arity an
-actor can take. By default, `PHOENIX_LIMIT` is set to 10.]
+[note You can set `BOOST_PHOENIX_LIMIT`, the predefined maximum arity an
+actor can take. By default, `BOOST_PHOENIX_LIMIT` is set to 10.]
 
 Phoenix supplies an `actor` class template whose specializations
 model the `Actor` concept. `actor` has one template parameter, `Expr`,
@@ -37,7 +37,7 @@
     };
 
 The actor class accepts the arguments through a set of function call operators
-for 0 to `PHOENIX_LIMIT` arities (Don't worry about the details, for now. Note, for example,
+for 0 to `BOOST_PHOENIX_LIMIT` arities (Don't worry about the details, for now. Note, for example,
 that we skimp over the details regarding `return_type`). The arguments are passed through to
 the evaluation mechanism. For more information see [link phoenix.inside.actor Inside Actors].
 

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/basics.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/basics.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/basics.qbk 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -143,10 +143,10 @@
 code to allow const and non-const references.
 
 We generate these second-stage overloads for Phoenix expression up to
-`PHOENIX_PERFECT_FORWARD_LIMIT`
+`BOOST_PHOENIX_PERFECT_FORWARD_LIMIT`
 
-[note You can set `PHOENIX_PERFECT_FORWARD_LIMIT`, the predefined maximum perfect
-forward arguments an actor can take. By default, `PHOENIX_PERFECT_FORWARDLIMIT`
+[note You can set `BOOST_PHOENIX_PERFECT_FORWARD_LIMIT`, the predefined maximum perfect
+forward arguments an actor can take. By default, `BOOST_PHOENIX_PERFECT_FORWARDLIMIT`
 is set to 3.]
 
 

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/examples/adding.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/examples/adding.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/examples/adding.qbk 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -14,7 +14,7 @@
 everything we've learned so far, we eill present it here in its entirety
 (verbatim):
 
- PHOENIX_DEFINE_EXPRESSION(
+ BOOST_PHOENIX_DEFINE_EXPRESSION(
         (boost)(phoenix)(while_)
       , (meta_grammar) // Cond
         (meta_grammar) // Do

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/index.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/index.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/index.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -26,7 +26,7 @@
 </h3></div></div>
 <div><p class="copyright">Copyright &#169; 2002-2005, 2010 Joel de Guzman, Dan Marsden, Thomas Heller</p></div>
 <div><div class="legalnotice">
-<a name="id555340"></a><p>
+<a name="id716654"></a><p>
         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)
       </p>
@@ -111,10 +111,10 @@
 <dt><span class="section">Actors in Detail</span></dt>
 <dt><span class="section">Phoenix Expressions</span></dt>
 <dd><dl>
-<dt><span class="section">PHOENIX_DEFINE_EXPRESSION</span></dt>
-<dt><span class="section">PHOENIX_DEFINE_EXPRESSION_VARARG</span></dt>
-<dt><span class="section">PHOENIX_DEFINE_EXPRESSION_EXT</span></dt>
-<dt><span class="section">PHOENIX_DEFINE_EXPRESSION_EXT_VARARG</span></dt>
+<dt><span class="section">BOOST_PHOENIX_DEFINE_EXPRESSION</span></dt>
+<dt><span class="section">BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG</span></dt>
+<dt><span class="section">BOOST_PHOENIX_DEFINE_EXPRESSION_EXT</span></dt>
+<dt><span class="section">BOOST_PHOENIX_DEFINE_EXPRESSION_EXT_VARARG</span></dt>
 </dl></dd>
 <dt><span class="section">More on Actions</span></dt>
 <dt><span class="section">Predefined Expressions and Rules</span></dt>
@@ -128,7 +128,7 @@
 </dl>
 </div>
 <a name="phoenix.preface"></a><h2>
-<a name="id586037"></a>
+<a name="id747351"></a>
     <a class="link" href="index.html#phoenix.preface">Preface</a>
   </h2>
 <div class="blockquote"><blockquote class="blockquote"><p>
@@ -147,7 +147,7 @@
     <span class="inlinemediaobject"><img src="images/lambda_cpp.png" alt="lambda_cpp"></span>
   </p>
 <a name="phoenix.description"></a><h3>
-<a name="id554144"></a>
+<a name="id715458"></a>
     <a class="link" href="index.html#phoenix.description">Description</a>
   </h3>
 <p>
@@ -165,7 +165,7 @@
     library is organized in highly independent modules and layers.
   </p>
 <a name="phoenix.how_to_use_this_manual"></a><h3>
-<a name="id554191"></a>
+<a name="id715505"></a>
     <a class="link" href="index.html#phoenix.how_to_use_this_manual">How to use this manual</a>
   </h3>
 <p>
@@ -187,7 +187,7 @@
     icons precede some text to indicate:
   </p>
 <div class="table">
-<a name="id554225"></a><p class="title"><b>Table&#160;1.1.&#160;Icons</b></p>
+<a name="id715539"></a><p class="title"><b>Table&#160;1.1.&#160;Icons</b></p>
 <div class="table-contents"><table class="table" summary="Icons">
 <colgroup>
 <col>
@@ -276,12 +276,12 @@
   </p>
 </div>
 <a name="phoenix._emphasis_role__bold___emphasis____to_joel_s_dear_daughter__phoenix__emphasis___emphasis_"></a><h3>
-<a name="id594994"></a>
+<a name="id756308"></a>
     <a class="link" href="index.html#phoenix._emphasis_role__bold___emphasis____to_joel_s_dear_daughter__phoenix__emphasis___emphasis_"><span class="bold"><strong><span class="emphasis"><em>...To Joel's dear daughter, Phoenix</em></span></strong></span></a>
   </h3>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: February 19, 2011 at 16:47:14 GMT</small></p></td>
+<td align="left"><p><small>Last revised: February 21, 2011 at 11:37:41 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix-doc_HTML.manifest
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix-doc_HTML.manifest (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix-doc_HTML.manifest 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -50,10 +50,10 @@
 phoenix/inside.html
 phoenix/inside/actor.html
 phoenix/inside/expression.html
-phoenix/inside/expression/phoenix_define_expression.html
-phoenix/inside/expression/phoenix_define_expression_vararg.html
-phoenix/inside/expression/phoenix_define_expression_ext.html
-phoenix/inside/expression/phoenix_define_expression_ext_vararg.html
+phoenix/inside/expression/boost_phoenix_define_expression.html
+phoenix/inside/expression/boost_phoenix_define_expression_vararg.html
+phoenix/inside/expression/boost_phoenix_define_expression_ext.html
+phoenix/inside/expression/boost_phoenix_define_expression_ext_vararg.html
 phoenix/inside/actions.html
 phoenix/inside/rules.html
 phoenix/inside/custom_terminals.html

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/actor.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/actor.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/actor.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -22,7 +22,7 @@
 <p>
       The <code class="computeroutput"><span class="identifier">Actor</span></code> is the main concept
       behind the library. Actors are function objects. An actor can accept 0 to
- <code class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></code> arguments.
+ <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_LIMIT</span></code> arguments.
     </p>
 <div class="note"><table border="0" summary="Note">
 <tr>
@@ -30,8 +30,8 @@
 <th align="left">Note</th>
 </tr>
 <tr><td align="left" valign="top"><p>
- You can set <code class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></code>,
- the predefined maximum arity an actor can take. By default, <code class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></code> is set to 10.
+ You can set <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_LIMIT</span></code>,
+ the predefined maximum arity an actor can take. By default, <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_LIMIT</span></code> is set to 10.
       </p></td></tr>
 </table></div>
 <p>
@@ -60,9 +60,9 @@
 </pre>
 <p>
       The actor class accepts the arguments through a set of function call operators
- for 0 to <code class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></code> arities
- (Don't worry about the details, for now. Note, for example, that we skimp over
- the details regarding <code class="computeroutput"><span class="identifier">return_type</span></code>).
+ for 0 to <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_LIMIT</span></code>
+ arities (Don't worry about the details, for now. Note, for example, that we
+ skimp over the details regarding <code class="computeroutput"><span class="identifier">return_type</span></code>).
       The arguments are passed through to the evaluation mechanism. For more information
       see <a class="link" href="inside/actor.html" title="Actors in Detail">Inside Actors</a>.
     </p>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/basics.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/basics.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/basics.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -42,7 +42,7 @@
       </p></td></tr>
 </table></div>
 <a name="phoenix.basics.partial_function_application"></a><h4>
-<a name="id598380"></a>
+<a name="id759694"></a>
       <a class="link" href="basics.html#phoenix.basics.partial_function_application">Partial Function
       Application</a>
     </h4>
@@ -94,7 +94,7 @@
       black boxes anymore.
     </p>
 <a name="phoenix.basics.stl_and_higher_order_functions"></a><h4>
-<a name="id598595"></a>
+<a name="id759909"></a>
       <a class="link" href="basics.html#phoenix.basics.stl_and_higher_order_functions">STL and higher
       order functions</a>
     </h4>
@@ -126,7 +126,7 @@
       </p></td></tr>
 </table></div>
 <a name="phoenix.basics.lazy_evaluation"></a><h4>
-<a name="id598806"></a>
+<a name="id760120"></a>
       <a class="link" href="basics.html#phoenix.basics.lazy_evaluation">Lazy Evaluation</a>
     </h4>
 <p>
@@ -181,7 +181,7 @@
 </span><span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="special">(</span><span class="identifier">arg1</span> <span class="special">%</span> <span class="number">2</span> <span class="special">==</span> <span class="number">1</span><span class="special">)(</span><span class="identifier">y</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span> <span class="comment">// prints 0 or false
 </span></pre>
 <a name="phoenix.basics.forwarding_function_problem"></a><h4>
-<a name="id599349"></a>
+<a name="id760663"></a>
       <a class="link" href="basics.html#phoenix.basics.forwarding_function_problem">Forwarding Function
       Problem</a>
     </h4>
@@ -207,7 +207,7 @@
       code to allow const and non-const references.
     </p>
 <p>
- We generate these second-stage overloads for Phoenix expression up to <code class="computeroutput"><span class="identifier">PHOENIX_PERFECT_FORWARD_LIMIT</span></code>
+ We generate these second-stage overloads for Phoenix expression up to <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_PERFECT_FORWARD_LIMIT</span></code>
     </p>
 <div class="note"><table border="0" summary="Note">
 <tr>
@@ -215,14 +215,14 @@
 <th align="left">Note</th>
 </tr>
 <tr><td align="left" valign="top"><p>
- You can set <code class="computeroutput"><span class="identifier">PHOENIX_PERFECT_FORWARD_LIMIT</span></code>,
+ You can set <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_PERFECT_FORWARD_LIMIT</span></code>,
         the predefined maximum perfect forward arguments an actor can take. By default,
- <code class="computeroutput"><span class="identifier">PHOENIX_PERFECT_FORWARDLIMIT</span></code>
+ <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_PERFECT_FORWARDLIMIT</span></code>
         is set to 3.
       </p></td></tr>
 </table></div>
 <a name="phoenix.basics.polymorphic_functions"></a><h4>
-<a name="id599487"></a>
+<a name="id760801"></a>
       <a class="link" href="basics.html#phoenix.basics.polymorphic_functions">Polymorphic Functions</a>
     </h4>
 <p>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/examples/adding_an_expression.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/examples/adding_an_expression.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/examples/adding_an_expression.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -24,7 +24,7 @@
         everything we've learned so far, we eill present it here in its entirety
         (verbatim):
       </p>
-<pre class="programlisting"><span class="identifier">PHOENIX_DEFINE_EXPRESSION</span><span class="special">(</span>
+<pre class="programlisting"><span class="identifier">BOOST_PHOENIX_DEFINE_EXPRESSION</span><span class="special">(</span>
     <span class="special">(</span><span class="identifier">boost</span><span class="special">)(</span><span class="identifier">phoenix</span><span class="special">)(</span><span class="identifier">while_</span><span class="special">)</span>
   <span class="special">,</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Cond
 </span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Do

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/examples/extending_actors.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/examples/extending_actors.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/examples/extending_actors.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -39,7 +39,7 @@
         on how to implement a custom actor which is usable as if it were a STL Container.
       </p>
 <a name="phoenix.examples.extending_actors.requirements"></a><h5>
-<a name="id648312"></a>
+<a name="id809637"></a>
         <a class="link" href="extending_actors.html#phoenix.examples.extending_actors.requirements">Requirements</a>
       </h5>
 <p>
@@ -141,7 +141,7 @@
         Additionally, we want all the operator() overloads of the regular actor.
       </p>
 <a name="phoenix.examples.extending_actors.defining_the_actor"></a><h5>
-<a name="id648625"></a>
+<a name="id809951"></a>
         <a class="link" href="extending_actors.html#phoenix.examples.extending_actors.defining_the_actor">Defining
         the actor</a>
       </h5>
@@ -174,7 +174,7 @@
 <span class="special">};</span>
 </pre>
 <a name="phoenix.examples.extending_actors.using_the_actor"></a><h5>
-<a name="id649509"></a>
+<a name="id810835"></a>
         <a class="link" href="extending_actors.html#phoenix.examples.extending_actors.using_the_actor">Using the
         actor</a>
       </h5>
@@ -231,7 +231,7 @@
         Wow, that was easy!
       </p>
 <a name="phoenix.examples.extending_actors.adding_life_to_the_actor"></a><h5>
-<a name="id650177"></a>
+<a name="id811502"></a>
         <a class="link" href="extending_actors.html#phoenix.examples.extending_actors.adding_life_to_the_actor">Adding
         life to the actor</a>
       </h5>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -23,10 +23,10 @@
 <dt><span class="section">Actors in Detail</span></dt>
 <dt><span class="section">Phoenix Expressions</span></dt>
 <dd><dl>
-<dt><span class="section">PHOENIX_DEFINE_EXPRESSION</span></dt>
-<dt><span class="section">PHOENIX_DEFINE_EXPRESSION_VARARG</span></dt>
-<dt><span class="section">PHOENIX_DEFINE_EXPRESSION_EXT</span></dt>
-<dt><span class="section">PHOENIX_DEFINE_EXPRESSION_EXT_VARARG</span></dt>
+<dt><span class="section">BOOST_PHOENIX_DEFINE_EXPRESSION</span></dt>
+<dt><span class="section">BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG</span></dt>
+<dt><span class="section">BOOST_PHOENIX_DEFINE_EXPRESSION_EXT</span></dt>
+<dt><span class="section">BOOST_PHOENIX_DEFINE_EXPRESSION_EXT_VARARG</span></dt>
 </dl></dd>
 <dt><span class="section">More on Actions</span></dt>
 <dt><span class="section">Predefined Expressions and Rules</span></dt>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/actions.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/actions.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/actions.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -6,14 +6,14 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Phoenix 3.0">
 <link rel="up" href="../inside.html" title="Inside Phoenix">
-<link rel="prev" href="expression/phoenix_define_expression_ext_vararg.html" title="PHOENIX_DEFINE_EXPRESSION_EXT_VARARG">
+<link rel="prev" href="expression/boost_phoenix_define_expression_ext_vararg.html" title="BOOST_PHOENIX_DEFINE_EXPRESSION_EXT_VARARG">
 <link rel="next" href="rules.html" title="Predefined Expressions and Rules">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="expression/phoenix_define_expression_ext_vararg.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inside.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="rules.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="expression/boost_phoenix_define_expression_ext_vararg.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inside.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="rules.html"><img src="../../images/next.png" alt="Next"></a>
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
@@ -84,7 +84,7 @@
         how the Phoenix AST will be traversed.
       </p>
 <a name="phoenix.inside.actions.writing_an_action"></a><h5>
-<a name="id637555"></a>
+<a name="id798880"></a>
         <a class="link" href="actions.html#phoenix.inside.actions.writing_an_action">Writing an Action</a>
       </h5>
 <p>
@@ -203,7 +203,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="expression/phoenix_define_expression_ext_vararg.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inside.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="rules.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="expression/boost_phoenix_define_expression_ext_vararg.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inside.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="rules.html"><img src="../../images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/actor.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/actor.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/actor.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -20,7 +20,7 @@
 <a name="phoenix.inside.actor"></a><a class="link" href="actor.html" title="Actors in Detail">Actors in Detail</a>
 </h3></div></div></div>
 <a name="phoenix.inside.actor.actor"></a><h5>
-<a name="id629026"></a>
+<a name="id790341"></a>
         <a class="link" href="actor.html#phoenix.inside.actor.actor">Actor</a>
       </h5>
 <p>
@@ -41,8 +41,8 @@
 <th align="left">Note</th>
 </tr>
 <tr><td align="left" valign="top"><p>
- You can set <code class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></code>,
- the predefined maximum arity an actor can take. By default, <code class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></code> is set to 10.
+ You can set <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_LIMIT</span></code>,
+ the predefined maximum arity an actor can take. By default, <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_LIMIT</span></code> is set to 10.
         </p></td></tr>
 </table></div>
 <p>
@@ -70,7 +70,7 @@
 </span><span class="special">};</span>
 </pre>
 <div class="table">
-<a name="id629544"></a><p class="title"><b>Table&#160;1.9.&#160;Actor Concept Requirements</b></p>
+<a name="id790860"></a><p class="title"><b>Table&#160;1.9.&#160;Actor Concept Requirements</b></p>
 <div class="table-contents"><table class="table" summary="Actor Concept Requirements">
 <colgroup>
 <col>
@@ -136,18 +136,18 @@
 </table></div>
 </div>
 <br class="table-break"><a name="phoenix.inside.actor.function_call_operators"></a><h5>
-<a name="id629846"></a>
+<a name="id791161"></a>
         <a class="link" href="actor.html#phoenix.inside.actor.function_call_operators">Function Call
         Operators</a>
       </h5>
 <p>
- There are 2*N function call operators for 0 to N arguments (N == <code class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></code>). The actor class accepts
+ There are 2*N function call operators for 0 to N arguments (N == <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_LIMIT</span></code>). The actor class accepts
         the arguments and forwards the arguments to the default evaluation action.
       </p>
 <p>
         Additionally, there exist function call operators accepting permutations
         of const and non-const references. These operators are created for all N
- &lt;= <code class="computeroutput"><span class="identifier">PHOENIX_PERFECT_FORWARD_LIMIT</span></code>
+ &lt;= <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_PERFECT_FORWARD_LIMIT</span></code>
         (which defaults to 3).
       </p>
 <div class="note"><table border="0" summary="Note">
@@ -169,7 +169,7 @@
 </td></tr>
 </table></div>
 <a name="phoenix.inside.actor.context"></a><h5>
-<a name="id629952"></a>
+<a name="id791268"></a>
         <a class="link" href="actor.html#phoenix.inside.actor.context">Context</a>
       </h5>
 <p>
@@ -180,7 +180,7 @@
         all information necessary to evaluate the given expression.
       </p>
 <div class="table">
-<a name="id629997"></a><p class="title"><b>Table&#160;1.10.&#160;Context Concept Requirements</b></p>
+<a name="id791312"></a><p class="title"><b>Table&#160;1.10.&#160;Context Concept Requirements</b></p>
 <div class="table-contents"><table class="table" summary="Context Concept Requirements">
 <colgroup>
 <col>
@@ -278,7 +278,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="phoenix.inside.actor.environment"></a><h5>
-<a name="id630364"></a>
+<a name="id791680"></a>
         <a class="link" href="actor.html#phoenix.inside.actor.environment">Environment</a>
       </h5>
 <p>
@@ -297,7 +297,7 @@
         such as local variables, etc.
       </p>
 <a name="phoenix.inside.actor.actions"></a><h5>
-<a name="id630430"></a>
+<a name="id791745"></a>
         <a class="link" href="actor.html#phoenix.inside.actor.actions">Actions</a>
       </h5>
 <p>
@@ -336,7 +336,7 @@
         on actions</a>.
       </p>
 <a name="phoenix.inside.actor.evaluation"></a><h5>
-<a name="id630713"></a>
+<a name="id792028"></a>
         <a class="link" href="actor.html#phoenix.inside.actor.evaluation">Evaluation</a>
       </h5>
 <pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">evaluator</span>
@@ -367,7 +367,7 @@
 <span class="special">}</span>
 </pre>
 <a name="phoenix.inside.actor.result_of__actor"></a><h5>
-<a name="id631218"></a>
+<a name="id792533"></a>
         <a class="link" href="actor.html#phoenix.inside.actor.result_of__actor">result_of::actor</a>
       </h5>
 <p>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -7,23 +7,23 @@
 <link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;Phoenix 3.0">
 <link rel="up" href="../inside.html" title="Inside Phoenix">
 <link rel="prev" href="actor.html" title="Actors in Detail">
-<link rel="next" href="expression/phoenix_define_expression.html" title="PHOENIX_DEFINE_EXPRESSION">
+<link rel="next" href="expression/boost_phoenix_define_expression.html" title="BOOST_PHOENIX_DEFINE_EXPRESSION">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="actor.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inside.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="expression/phoenix_define_expression.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="actor.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inside.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="expression/boost_phoenix_define_expression.html"><img src="../../images/next.png" alt="Next"></a>
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h3 class="title">
 <a name="phoenix.inside.expression"></a><a class="link" href="expression.html" title="Phoenix Expressions">Phoenix Expressions</a>
 </h3></div></div></div>
 <div class="toc"><dl>
-<dt><span class="section">PHOENIX_DEFINE_EXPRESSION</span></dt>
-<dt><span class="section">PHOENIX_DEFINE_EXPRESSION_VARARG</span></dt>
-<dt><span class="section">PHOENIX_DEFINE_EXPRESSION_EXT</span></dt>
-<dt><span class="section">PHOENIX_DEFINE_EXPRESSION_EXT_VARARG</span></dt>
+<dt><span class="section">BOOST_PHOENIX_DEFINE_EXPRESSION</span></dt>
+<dt><span class="section">BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG</span></dt>
+<dt><span class="section">BOOST_PHOENIX_DEFINE_EXPRESSION_EXT</span></dt>
+<dt><span class="section">BOOST_PHOENIX_DEFINE_EXPRESSION_EXT_VARARG</span></dt>
 </dl></div>
 <p>
         A Phoenix Expression is a model of the <a href="http://www.boost.org/doc/libs/release/doc/html/Expr.html" target="_top">Proto
@@ -155,7 +155,7 @@
         </p></td></tr>
 </table></div>
 <a name="phoenix.inside.expression.meta_grammar"></a><h5>
-<a name="id632631"></a>
+<a name="id793947"></a>
         <a class="link" href="expression.html#phoenix.inside.expression.meta_grammar">meta_grammar</a>
       </h5>
 <p>
@@ -183,7 +183,7 @@
         you include this grammar gets extended by various expressions.
       </p>
 <a name="phoenix.inside.expression.example"></a><h5>
-<a name="id632862"></a>
+<a name="id794177"></a>
         <a class="link" href="expression.html#phoenix.inside.expression.example">Example</a>
       </h5>
 <p>
@@ -270,7 +270,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="actor.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inside.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="expression/phoenix_define_expression.html"><img src="../../images/next.png" alt="Next"></a>
+<a accesskey="p" href="actor.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../inside.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="expression/boost_phoenix_define_expression.html"><img src="../../images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/boost_phoenix_define_expression.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/boost_phoenix_define_expression.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -0,0 +1,130 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>BOOST_PHOENIX_DEFINE_EXPRESSION</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Phoenix 3.0">
+<link rel="up" href="../expression.html" title="Phoenix Expressions">
+<link rel="prev" href="../expression.html" title="Phoenix Expressions">
+<link rel="next" href="boost_phoenix_define_expression_vararg.html" title="BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../expression.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expression.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="boost_phoenix_define_expression_vararg.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="phoenix.inside.expression.boost_phoenix_define_expression"></a><a class="link" href="boost_phoenix_define_expression.html" title="BOOST_PHOENIX_DEFINE_EXPRESSION">BOOST_PHOENIX_DEFINE_EXPRESSION</a>
+</h4></div></div></div>
+<a name="phoenix.inside.expression.boost_phoenix_define_expression.description"></a><h6>
+<a name="id794998"></a>
+ <a class="link" href="boost_phoenix_define_expression.html#phoenix.inside.expression.boost_phoenix_define_expression.description">Description</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_DEFINE_EXPRESSION</span></code>
+ is a macro that can be used to generate all the necessary boilerplate to
+ create Phoenix Expressions
+ </p>
+<a name="phoenix.inside.expression.boost_phoenix_define_expression.synopsis"></a><h6>
+<a name="id795033"></a>
+ <a class="link" href="boost_phoenix_define_expression.html#phoenix.inside.expression.boost_phoenix_define_expression.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><span class="identifier">BOOST_PHOENIX_DEFINE_EXPRESSION</span><span class="special">(</span>
+ <span class="special">(</span><span class="identifier">namespace_seq</span><span class="special">)(</span><span class="identifier">name</span><span class="special">)</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">child_grammar0</span><span class="special">)</span>
+ <span class="special">(</span><span class="identifier">child_grammar1</span><span class="special">)</span>
+ <span class="special">...</span>
+<span class="special">)</span>
+</pre>
+<a name="phoenix.inside.expression.boost_phoenix_define_expression.semantics"></a><h6>
+<a name="id795138"></a>
+ <a class="link" href="boost_phoenix_define_expression.html#phoenix.inside.expression.boost_phoenix_define_expression.semantics">Semantics</a>
+ </h6>
+<p>
+ The above macro generates the necessary code for an expression <code class="computeroutput"><span class="identifier">name</span></code> in namespace <code class="computeroutput"><span class="identifier">namespace_seq</span></code>.
+ The sequence of <code class="computeroutput"><span class="special">(</span><span class="identifier">child_grammarN</span><span class="special">)</span></code> declares how many children the expression
+ will have and what <code class="computeroutput"><span class="identifier">proto</span><span class="special">::</span><span class="identifier">grammar</span></code>
+ they match.
+ </p>
+<p>
+ The macro should be used at global scope. <code class="computeroutput"><span class="identifier">namespace_seq</span></code>
+ shall be the sequence of namespaces under which the following symbols will
+ be defined:
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">tag</span>
+<span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">name</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">namespace</span> <span class="identifier">expression</span>
+<span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">A0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span> <span class="special">...</span> <span class="keyword">typename</span> <span class="identifier">AN</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">name</span>
+ <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">expr</span><span class="special">&lt;</span>
+ <span class="identifier">tag</span><span class="special">::</span><span class="identifier">name</span>
+ <span class="special">,</span> <span class="identifier">A0</span>
+ <span class="special">,</span> <span class="identifier">A1</span>
+ <span class="special">...</span>
+ <span class="special">,</span> <span class="identifier">AN</span>
+ <span class="special">&gt;</span>
+<span class="special">}</span>
+
+<span class="keyword">namespace</span> <span class="identifier">rule</span>
+<span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">name</span>
+ <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">expr</span><span class="special">&lt;</span>
+ <span class="identifier">child_grammar0</span>
+ <span class="special">,</span> <span class="identifier">child_grammar1</span>
+ <span class="special">...</span>
+ <span class="special">,</span> <span class="identifier">child_grammarN</span>
+ <span class="special">&gt;</span>
+ <span class="special">{};</span>
+<span class="special">}</span>
+</pre>
+<p>
+ This macros also adds a specialization for <code class="computeroutput"><span class="identifier">meta_grammar</span><span class="special">::</span><span class="identifier">case_</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">name</span><span class="special">&gt;</span></code>.
+ </p>
+<a name="phoenix.inside.expression.boost_phoenix_define_expression.header"></a><h6>
+<a name="id795625"></a>
+ <a class="link" href="boost_phoenix_define_expression.html#phoenix.inside.expression.boost_phoenix_define_expression.header">Header</a>
+ </h6>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">expression</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<a name="phoenix.inside.expression.boost_phoenix_define_expression.example"></a><h6>
+<a name="id795707"></a>
+ <a class="link" href="boost_phoenix_define_expression.html#phoenix.inside.expression.boost_phoenix_define_expression.example">Example</a>
+ </h6>
+<p>
+ The example from the previous section can be rewritten as:
+ </p>
+<pre class="programlisting"><span class="identifier">BOOST_PHOENIX_DEFINE_EXPRESSION</span><span class="special">(</span>
+ <span class="special">(</span><span class="identifier">plus</span><span class="special">)</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Lhs
+</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Rhs
+</span><span class="special">)</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Lhs</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Rhs</span><span class="special">&gt;</span>
+<span class="keyword">typename</span> <span class="identifier">plus</span><span class="special">&lt;</span><span class="identifier">Lhs</span><span class="special">,</span> <span class="identifier">Rhs</span><span class="special">&gt;::</span><span class="identifier">type</span>
+<span class="identifier">plus</span><span class="special">(</span><span class="identifier">Lhs</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">Rhs</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">expression</span><span class="special">::</span><span class="identifier">plus</span><span class="special">&lt;</span><span class="identifier">Lhs</span><span class="special">,</span> <span class="identifier">Rhs</span><span class="special">&gt;::</span><span class="identifier">make</span><span class="special">(</span><span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">rhs</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2005, 2010 Joel de Guzman, Dan Marsden, Thomas Heller<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../expression.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expression.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="boost_phoenix_define_expression_vararg.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/boost_phoenix_define_expression_ext.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/boost_phoenix_define_expression_ext.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -0,0 +1,128 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>BOOST_PHOENIX_DEFINE_EXPRESSION_EXT</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Phoenix 3.0">
+<link rel="up" href="../expression.html" title="Phoenix Expressions">
+<link rel="prev" href="boost_phoenix_define_expression_vararg.html" title="BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG">
+<link rel="next" href="boost_phoenix_define_expression_ext_vararg.html" title="BOOST_PHOENIX_DEFINE_EXPRESSION_EXT_VARARG">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost_phoenix_define_expression_vararg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expression.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="boost_phoenix_define_expression_ext_vararg.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="phoenix.inside.expression.boost_phoenix_define_expression_ext"></a><a class="link" href="boost_phoenix_define_expression_ext.html" title="BOOST_PHOENIX_DEFINE_EXPRESSION_EXT">BOOST_PHOENIX_DEFINE_EXPRESSION_EXT</a>
+</h4></div></div></div>
+<a name="phoenix.inside.expression.boost_phoenix_define_expression_ext.description"></a><h6>
+<a name="id796939"></a>
+ <a class="link" href="boost_phoenix_define_expression_ext.html#phoenix.inside.expression.boost_phoenix_define_expression_ext.description">Description</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_DEFINE_EXPRESSION_EXT</span></code>
+ is a macro that can be used to generate all the necessary boilerplate to
+ create Phoenix Expressions
+ </p>
+<a name="phoenix.inside.expression.boost_phoenix_define_expression_ext.synopsis"></a><h6>
+<a name="id796974"></a>
+ <a class="link" href="boost_phoenix_define_expression_ext.html#phoenix.inside.expression.boost_phoenix_define_expression_ext.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><span class="identifier">BOOST_PHOENIX_DEFINE_EXPRESSION_EXT</span><span class="special">(</span>
+ <span class="identifier">actor</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">namespace_seq</span><span class="special">)(</span><span class="identifier">name</span><span class="special">)</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">child_grammar0</span><span class="special">)</span>
+ <span class="special">(</span><span class="identifier">child_grammar1</span><span class="special">)</span>
+ <span class="special">...</span>
+ <span class="special">(</span><span class="identifier">child_grammarN</span><span class="special">)</span>
+ <span class="special">,</span> <span class="identifier">N</span>
+<span class="special">)</span>
+</pre>
+<a name="phoenix.inside.expression.boost_phoenix_define_expression_ext.semantics"></a><h6>
+<a name="id797114"></a>
+ <a class="link" href="boost_phoenix_define_expression_ext.html#phoenix.inside.expression.boost_phoenix_define_expression_ext.semantics">Semantics</a>
+ </h6>
+<p>
+ The above macro generates the necessary code for an expression <code class="computeroutput"><span class="identifier">name</span></code> in namespace <code class="computeroutput"><span class="identifier">namespace_seq</span></code>.
+ The sequence of <code class="computeroutput"><span class="special">(</span><span class="identifier">child_grammarN</span><span class="special">)</span></code> declares how many children the expression
+ will have and what <code class="computeroutput"><span class="identifier">proto</span><span class="special">::</span><span class="identifier">grammar</span></code>
+ they match.
+ </p>
+<p>
+ The macro should be used at global scope. <code class="computeroutput"><span class="identifier">namespace_seq</span></code>
+ shall be the sequence of namespaces under which the following symbols will
+ be defined:
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">tag</span>
+<span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">name</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">namespace</span> <span class="identifier">expression</span>
+<span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">A0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span> <span class="special">...</span> <span class="keyword">typename</span> <span class="identifier">AN</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">name</span>
+ <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">expr_ext</span><span class="special">&lt;</span>
+ <span class="identifier">actor</span>
+ <span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">name</span>
+ <span class="special">,</span> <span class="identifier">A0</span>
+ <span class="special">,</span> <span class="identifier">A1</span>
+ <span class="special">...</span>
+ <span class="special">,</span> <span class="identifier">AN</span>
+ <span class="special">&gt;</span>
+<span class="special">}</span>
+
+<span class="keyword">namespace</span> <span class="identifier">rule</span>
+<span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">name</span>
+ <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">expr</span><span class="special">&lt;</span>
+ <span class="identifier">child_grammar0</span>
+ <span class="special">,</span> <span class="identifier">child_grammar1</span>
+ <span class="special">...</span>
+ <span class="special">,</span> <span class="identifier">child_grammarN</span>
+ <span class="special">&gt;</span>
+ <span class="special">{};</span>
+<span class="special">}</span>
+</pre>
+<p>
+ This macros also adds a specialization for <code class="computeroutput"><span class="identifier">meta_grammar</span><span class="special">::</span><span class="identifier">case_</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">name</span><span class="special">&gt;</span></code>.
+ </p>
+<a name="phoenix.inside.expression.boost_phoenix_define_expression_ext.header"></a><h6>
+<a name="id797615"></a>
+ <a class="link" href="boost_phoenix_define_expression_ext.html#phoenix.inside.expression.boost_phoenix_define_expression_ext.header">Header</a>
+ </h6>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">expression</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<a name="phoenix.inside.expression.boost_phoenix_define_expression_ext.example"></a><h6>
+<a name="id797697"></a>
+ <a class="link" href="boost_phoenix_define_expression_ext.html#phoenix.inside.expression.boost_phoenix_define_expression_ext.example">Example</a>
+ </h6>
+<pre class="programlisting"><span class="identifier">BOOST_PHOENIX_DEFINE_EXPRESSION_EXT</span><span class="special">(</span>
+ <span class="identifier">if_actor</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">)(</span><span class="identifier">phoenix</span><span class="special">)(</span><span class="identifier">if_</span><span class="special">)</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Cond
+</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Then
+</span><span class="special">)</span>
+</pre>
+<p>
+ This defines the if_ expression. The custom actor defines the <code class="computeroutput"><span class="identifier">else_</span></code>.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2005, 2010 Joel de Guzman, Dan Marsden, Thomas Heller<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost_phoenix_define_expression_vararg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expression.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="boost_phoenix_define_expression_ext_vararg.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/boost_phoenix_define_expression_ext_vararg.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/boost_phoenix_define_expression_ext_vararg.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -0,0 +1,121 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>BOOST_PHOENIX_DEFINE_EXPRESSION_EXT_VARARG</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Phoenix 3.0">
+<link rel="up" href="../expression.html" title="Phoenix Expressions">
+<link rel="prev" href="boost_phoenix_define_expression_ext.html" title="BOOST_PHOENIX_DEFINE_EXPRESSION_EXT">
+<link rel="next" href="../actions.html" title="More on Actions">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost_phoenix_define_expression_ext.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expression.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../actions.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="phoenix.inside.expression.boost_phoenix_define_expression_ext_vararg"></a><a class="link" href="boost_phoenix_define_expression_ext_vararg.html" title="BOOST_PHOENIX_DEFINE_EXPRESSION_EXT_VARARG">BOOST_PHOENIX_DEFINE_EXPRESSION_EXT_VARARG</a>
+</h4></div></div></div>
+<a name="phoenix.inside.expression.boost_phoenix_define_expression_ext_vararg.description"></a><h6>
+<a name="id797859"></a>
+ <a class="link" href="boost_phoenix_define_expression_ext_vararg.html#phoenix.inside.expression.boost_phoenix_define_expression_ext_vararg.description">Description</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_DEFINE_EXPRESSION_EXT_VARARG</span></code>
+ is a macro that can be used to generate all the necessary boilerplate to
+ create Phoenix Expressions
+ </p>
+<a name="phoenix.inside.expression.boost_phoenix_define_expression_ext_vararg.synopsis"></a><h6>
+<a name="id797895"></a>
+ <a class="link" href="boost_phoenix_define_expression_ext_vararg.html#phoenix.inside.expression.boost_phoenix_define_expression_ext_vararg.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><span class="identifier">BOOST_PHOENIX_DEFINE_EXPRESSION_EXT_VARARG</span><span class="special">(</span>
+ <span class="identifier">actor</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">namespace_seq</span><span class="special">)(</span><span class="identifier">name</span><span class="special">)</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">child_grammar0</span><span class="special">)</span>
+ <span class="special">(</span><span class="identifier">child_grammar1</span><span class="special">)</span>
+ <span class="special">...</span>
+ <span class="special">(</span><span class="identifier">child_grammarN</span><span class="special">)</span>
+ <span class="special">,</span> <span class="identifier">N</span>
+<span class="special">)</span>
+</pre>
+<a name="phoenix.inside.expression.boost_phoenix_define_expression_ext_vararg.semantics"></a><h6>
+<a name="id798037"></a>
+ <a class="link" href="boost_phoenix_define_expression_ext_vararg.html#phoenix.inside.expression.boost_phoenix_define_expression_ext_vararg.semantics">Semantics</a>
+ </h6>
+<p>
+ The above macro generates the necessary code for an expression <code class="computeroutput"><span class="identifier">name</span></code> in namespace <code class="computeroutput"><span class="identifier">namespace_seq</span></code>.
+ <code class="computeroutput"><span class="identifier">N</span></code> is the maximum number
+ of variable children. All but the last elements in the grammar sequence
+ are required children of the expression, and the last denotes a variable
+ number of children. The number of children an expression of this kind can
+ hold is therefor <code class="computeroutput"><span class="identifier">N</span><span class="special">-</span><span class="number">1</span></code> plus the size of the sequence
+ </p>
+<p>
+ The macro should be used at global scope. <code class="computeroutput"><span class="identifier">namespace_seq</span></code>
+ shall be the sequence of namespaces under which the following symbols will
+ be defined:
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">tag</span>
+<span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">name</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">namespace</span> <span class="identifier">expression</span>
+<span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">A0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span> <span class="special">...</span> <span class="keyword">typename</span> <span class="identifier">AN</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">name</span>
+ <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">expr_ext</span><span class="special">&lt;</span>
+ <span class="identifier">actor</span>
+ <span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">name</span>
+ <span class="special">,</span> <span class="identifier">A0</span>
+ <span class="special">,</span> <span class="identifier">A1</span>
+ <span class="special">...</span>
+ <span class="special">,</span> <span class="identifier">AN</span>
+ <span class="special">&gt;</span>
+ <span class="special">{};</span>
+<span class="special">}</span>
+
+<span class="keyword">namespace</span> <span class="identifier">rule</span>
+<span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">name</span>
+ <span class="special">:</span> <span class="identifier">expression</span><span class="special">::</span><span class="identifier">name</span><span class="special">&lt;</span>
+ <span class="identifier">child_grammar0</span>
+ <span class="special">,</span> <span class="identifier">child_grammar1</span>
+ <span class="special">...</span>
+ <span class="special">,</span> <span class="identifier">proto</span><span class="special">::</span><span class="identifier">vararg</span><span class="special">&lt;</span><span class="identifier">child_grammarN</span><span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">{};</span>
+<span class="special">}</span>
+</pre>
+<a name="phoenix.inside.expression.boost_phoenix_define_expression_ext_vararg.header"></a><h6>
+<a name="id798503"></a>
+ <a class="link" href="boost_phoenix_define_expression_ext_vararg.html#phoenix.inside.expression.boost_phoenix_define_expression_ext_vararg.header">Header</a>
+ </h6>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">expression</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<a name="phoenix.inside.expression.boost_phoenix_define_expression_ext_vararg.example"></a><h6>
+<a name="id798586"></a>
+ <a class="link" href="boost_phoenix_define_expression_ext_vararg.html#phoenix.inside.expression.boost_phoenix_define_expression_ext_vararg.example">Example</a>
+ </h6>
+<p>
+ TBD
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2005, 2010 Joel de Guzman, Dan Marsden, Thomas Heller<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost_phoenix_define_expression_ext.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expression.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../actions.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/boost_phoenix_define_expression_vararg.html
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/boost_phoenix_define_expression_vararg.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -0,0 +1,128 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG</title>
+<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Phoenix 3.0">
+<link rel="up" href="../expression.html" title="Phoenix Expressions">
+<link rel="prev" href="boost_phoenix_define_expression.html" title="BOOST_PHOENIX_DEFINE_EXPRESSION">
+<link rel="next" href="boost_phoenix_define_expression_ext.html" title="BOOST_PHOENIX_DEFINE_EXPRESSION_EXT">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost_phoenix_define_expression.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expression.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="boost_phoenix_define_expression_ext.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="phoenix.inside.expression.boost_phoenix_define_expression_vararg"></a><a class="link" href="boost_phoenix_define_expression_vararg.html" title="BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG">BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG</a>
+</h4></div></div></div>
+<a name="phoenix.inside.expression.boost_phoenix_define_expression_vararg.description"></a><h6>
+<a name="id796056"></a>
+ <a class="link" href="boost_phoenix_define_expression_vararg.html#phoenix.inside.expression.boost_phoenix_define_expression_vararg.description">Description</a>
+ </h6>
+<p>
+ <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG</span></code>
+ is a macro that can be used to generate all the necessary boilerplate to
+ create Phoenix Expressions
+ </p>
+<a name="phoenix.inside.expression.boost_phoenix_define_expression_vararg.synopsis"></a><h6>
+<a name="id796092"></a>
+ <a class="link" href="boost_phoenix_define_expression_vararg.html#phoenix.inside.expression.boost_phoenix_define_expression_vararg.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><span class="identifier">BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG</span><span class="special">(</span>
+ <span class="special">(</span><span class="identifier">namespace_seq</span><span class="special">)(</span><span class="identifier">name</span><span class="special">)</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">child_grammar0</span><span class="special">)</span>
+ <span class="special">(</span><span class="identifier">child_grammar1</span><span class="special">)</span>
+ <span class="special">...</span>
+ <span class="special">(</span><span class="identifier">child_grammarN</span><span class="special">)</span>
+ <span class="special">,</span> <span class="identifier">N</span>
+<span class="special">)</span>
+</pre>
+<a name="phoenix.inside.expression.boost_phoenix_define_expression_vararg.semantics"></a><h6>
+<a name="id796223"></a>
+ <a class="link" href="boost_phoenix_define_expression_vararg.html#phoenix.inside.expression.boost_phoenix_define_expression_vararg.semantics">Semantics</a>
+ </h6>
+<p>
+ The above macro generates the necessary code for an expression <code class="computeroutput"><span class="identifier">name</span></code> in namespace <code class="computeroutput"><span class="identifier">namespace_seq</span></code>.
+ <code class="computeroutput"><span class="identifier">N</span></code> is the maximum number
+ of variable children. All but the last elements in the grammar sequence
+ are required children of the expression, and the last denotes a variable
+ number of children. The number of children an expression of this kind can
+ hold is therefor <code class="computeroutput"><span class="identifier">N</span><span class="special">-</span><span class="number">1</span></code> plus the size of the sequence
+ </p>
+<p>
+ The macro should be used at global scope. <code class="computeroutput"><span class="identifier">namespace_seq</span></code>
+ shall be the sequence of namespaces under which the following symbols will
+ be defined:
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">tag</span>
+<span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">name</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="keyword">namespace</span> <span class="identifier">expression</span>
+<span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">A0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span> <span class="special">...</span> <span class="keyword">typename</span> <span class="identifier">AN</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">name</span>
+ <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">expr</span><span class="special">&lt;</span>
+ <span class="identifier">tag</span><span class="special">::</span><span class="identifier">name</span>
+ <span class="special">,</span> <span class="identifier">A0</span>
+ <span class="special">,</span> <span class="identifier">A1</span>
+ <span class="special">...</span>
+ <span class="special">,</span> <span class="identifier">AN</span>
+ <span class="special">&gt;</span>
+ <span class="special">{};</span>
+<span class="special">}</span>
+
+<span class="keyword">namespace</span> <span class="identifier">rule</span>
+<span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">name</span>
+ <span class="special">:</span> <span class="identifier">expression</span><span class="special">::</span><span class="identifier">name</span><span class="special">&lt;</span>
+ <span class="identifier">child_grammar0</span>
+ <span class="special">,</span> <span class="identifier">child_grammar1</span>
+ <span class="special">...</span>
+ <span class="special">,</span> <span class="identifier">proto</span><span class="special">::</span><span class="identifier">vararg</span><span class="special">&lt;</span><span class="identifier">child_grammarN</span><span class="special">&gt;</span>
+ <span class="special">&gt;</span>
+ <span class="special">{};</span>
+<span class="special">}</span>
+</pre>
+<a name="phoenix.inside.expression.boost_phoenix_define_expression_vararg.header"></a><h6>
+<a name="id796676"></a>
+ <a class="link" href="boost_phoenix_define_expression_vararg.html#phoenix.inside.expression.boost_phoenix_define_expression_vararg.header">Header</a>
+ </h6>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">expression</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<a name="phoenix.inside.expression.boost_phoenix_define_expression_vararg.example"></a><h6>
+<a name="id796759"></a>
+ <a class="link" href="boost_phoenix_define_expression_vararg.html#phoenix.inside.expression.boost_phoenix_define_expression_vararg.example">Example</a>
+ </h6>
+<pre class="programlisting"><span class="identifier">BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG</span><span class="special">(</span>
+ <span class="special">(</span><span class="identifier">boost</span><span class="special">)(</span><span class="identifier">phoenix</span><span class="special">)(</span><span class="identifier">mem_fun_ptr</span><span class="special">)</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Pointer to Object
+</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Member pointer
+</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Variable number of arguments
+</span> <span class="special">,</span> <span class="identifier">BOOST_PHOENIX_LIMIT</span>
+<span class="special">)</span>
+</pre>
+<p>
+ This defines the member function pointer operator expression as described
+ in <a class="link" href="../../modules/operator.html" title="Operator">operators</a>.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2005, 2010 Joel de Guzman, Dan Marsden, Thomas Heller<p>
+ 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)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost_phoenix_define_expression.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expression.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="boost_phoenix_define_expression_ext.html"><img src="../../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Deleted: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
+++ (empty file)
@@ -1,130 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>PHOENIX_DEFINE_EXPRESSION</title>
-<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
-<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Phoenix 3.0">
-<link rel="up" href="../expression.html" title="Phoenix Expressions">
-<link rel="prev" href="../expression.html" title="Phoenix Expressions">
-<link rel="next" href="phoenix_define_expression_vararg.html" title="PHOENIX_DEFINE_EXPRESSION_VARARG">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
-<hr>
-<div class="spirit-nav">
-<a accesskey="p" href="../expression.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expression.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="phoenix_define_expression_vararg.html"><img src="../../../images/next.png" alt="Next"></a>
-</div>
-<div class="section">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="phoenix.inside.expression.phoenix_define_expression"></a><a class="link" href="phoenix_define_expression.html" title="PHOENIX_DEFINE_EXPRESSION">PHOENIX_DEFINE_EXPRESSION</a>
-</h4></div></div></div>
-<a name="phoenix.inside.expression.phoenix_define_expression.description"></a><h6>
-<a name="id633682"></a>
- <a class="link" href="phoenix_define_expression.html#phoenix.inside.expression.phoenix_define_expression.description">Description</a>
- </h6>
-<p>
- <code class="computeroutput"><span class="identifier">PHOENIX_DEFINE_EXPRESSION</span></code>
- is a macro that can be used to generate all the necessary boilerplate to
- create Phoenix Expressions
- </p>
-<a name="phoenix.inside.expression.phoenix_define_expression.synopsis"></a><h6>
-<a name="id633717"></a>
- <a class="link" href="phoenix_define_expression.html#phoenix.inside.expression.phoenix_define_expression.synopsis">Synopsis</a>
- </h6>
-<pre class="programlisting"><span class="identifier">PHOENIX_DEFINE_EXPRESSION</span><span class="special">(</span>
- <span class="special">(</span><span class="identifier">namespace_seq</span><span class="special">)(</span><span class="identifier">name</span><span class="special">)</span>
- <span class="special">,</span> <span class="special">(</span><span class="identifier">child_grammar0</span><span class="special">)</span>
- <span class="special">(</span><span class="identifier">child_grammar1</span><span class="special">)</span>
- <span class="special">...</span>
-<span class="special">)</span>
-</pre>
-<a name="phoenix.inside.expression.phoenix_define_expression.semantics"></a><h6>
-<a name="id633821"></a>
- <a class="link" href="phoenix_define_expression.html#phoenix.inside.expression.phoenix_define_expression.semantics">Semantics</a>
- </h6>
-<p>
- The above macro generates the necessary code for an expression <code class="computeroutput"><span class="identifier">name</span></code> in namespace <code class="computeroutput"><span class="identifier">namespace_seq</span></code>.
- The sequence of <code class="computeroutput"><span class="special">(</span><span class="identifier">child_grammarN</span><span class="special">)</span></code> declares how many children the expression
- will have and what <code class="computeroutput"><span class="identifier">proto</span><span class="special">::</span><span class="identifier">grammar</span></code>
- they match.
- </p>
-<p>
- The macro should be used at global scope. <code class="computeroutput"><span class="identifier">namespace_seq</span></code>
- shall be the sequence of namespaces under which the following symbols will
- be defined:
- </p>
-<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">tag</span>
-<span class="special">{</span>
- <span class="keyword">struct</span> <span class="identifier">name</span><span class="special">;</span>
-<span class="special">}</span>
-
-<span class="keyword">namespace</span> <span class="identifier">expression</span>
-<span class="special">{</span>
- <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">A0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span> <span class="special">...</span> <span class="keyword">typename</span> <span class="identifier">AN</span><span class="special">&gt;</span>
- <span class="keyword">struct</span> <span class="identifier">name</span>
- <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">expr</span><span class="special">&lt;</span>
- <span class="identifier">tag</span><span class="special">::</span><span class="identifier">name</span>
- <span class="special">,</span> <span class="identifier">A0</span>
- <span class="special">,</span> <span class="identifier">A1</span>
- <span class="special">...</span>
- <span class="special">,</span> <span class="identifier">AN</span>
- <span class="special">&gt;</span>
-<span class="special">}</span>
-
-<span class="keyword">namespace</span> <span class="identifier">rule</span>
-<span class="special">{</span>
- <span class="keyword">struct</span> <span class="identifier">name</span>
- <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">expr</span><span class="special">&lt;</span>
- <span class="identifier">child_grammar0</span>
- <span class="special">,</span> <span class="identifier">child_grammar1</span>
- <span class="special">...</span>
- <span class="special">,</span> <span class="identifier">child_grammarN</span>
- <span class="special">&gt;</span>
- <span class="special">{};</span>
-<span class="special">}</span>
-</pre>
-<p>
- This macros also adds a specialization for <code class="computeroutput"><span class="identifier">meta_grammar</span><span class="special">::</span><span class="identifier">case_</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">name</span><span class="special">&gt;</span></code>.
- </p>
-<a name="phoenix.inside.expression.phoenix_define_expression.header"></a><h6>
-<a name="id634308"></a>
- <a class="link" href="phoenix_define_expression.html#phoenix.inside.expression.phoenix_define_expression.header">Header</a>
- </h6>
-<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">expression</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-</pre>
-<a name="phoenix.inside.expression.phoenix_define_expression.example"></a><h6>
-<a name="id634390"></a>
- <a class="link" href="phoenix_define_expression.html#phoenix.inside.expression.phoenix_define_expression.example">Example</a>
- </h6>
-<p>
- The example from the previous section can be rewritten as:
- </p>
-<pre class="programlisting"><span class="identifier">BOOST_PHOENIX_DEFINE_EXPRESSION</span><span class="special">(</span>
- <span class="special">(</span><span class="identifier">plus</span><span class="special">)</span>
- <span class="special">,</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Lhs
-</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Rhs
-</span><span class="special">)</span>
-
-<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Lhs</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Rhs</span><span class="special">&gt;</span>
-<span class="keyword">typename</span> <span class="identifier">plus</span><span class="special">&lt;</span><span class="identifier">Lhs</span><span class="special">,</span> <span class="identifier">Rhs</span><span class="special">&gt;::</span><span class="identifier">type</span>
-<span class="identifier">plus</span><span class="special">(</span><span class="identifier">Lhs</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">Rhs</span> <span class="keyword">const</span> <span class="special">&amp;</span> <span class="identifier">rhs</span><span class="special">)</span>
-<span class="special">{</span>
- <span class="keyword">return</span> <span class="identifier">expression</span><span class="special">::</span><span class="identifier">plus</span><span class="special">&lt;</span><span class="identifier">Lhs</span><span class="special">,</span> <span class="identifier">Rhs</span><span class="special">&gt;::</span><span class="identifier">make</span><span class="special">(</span><span class="identifier">lhs</span><span class="special">,</span> <span class="identifier">rhs</span><span class="special">);</span>
-<span class="special">}</span>
-</pre>
-</div>
-<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2005, 2010 Joel de Guzman, Dan Marsden, Thomas Heller<p>
- 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)
- </p>
-</div></td>
-</tr></table>
-<hr>
-<div class="spirit-nav">
-<a accesskey="p" href="../expression.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expression.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="phoenix_define_expression_vararg.html"><img src="../../../images/next.png" alt="Next"></a>
-</div>
-</body>
-</html>

Deleted: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_ext.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_ext.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
+++ (empty file)
@@ -1,128 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>PHOENIX_DEFINE_EXPRESSION_EXT</title>
-<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
-<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Phoenix 3.0">
-<link rel="up" href="../expression.html" title="Phoenix Expressions">
-<link rel="prev" href="phoenix_define_expression_vararg.html" title="PHOENIX_DEFINE_EXPRESSION_VARARG">
-<link rel="next" href="phoenix_define_expression_ext_vararg.html" title="PHOENIX_DEFINE_EXPRESSION_EXT_VARARG">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
-<hr>
-<div class="spirit-nav">
-<a accesskey="p" href="phoenix_define_expression_vararg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expression.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="phoenix_define_expression_ext_vararg.html"><img src="../../../images/next.png" alt="Next"></a>
-</div>
-<div class="section">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="phoenix.inside.expression.phoenix_define_expression_ext"></a><a class="link" href="phoenix_define_expression_ext.html" title="PHOENIX_DEFINE_EXPRESSION_EXT">PHOENIX_DEFINE_EXPRESSION_EXT</a>
-</h4></div></div></div>
-<a name="phoenix.inside.expression.phoenix_define_expression_ext.description"></a><h6>
-<a name="id635620"></a>
- <a class="link" href="phoenix_define_expression_ext.html#phoenix.inside.expression.phoenix_define_expression_ext.description">Description</a>
- </h6>
-<p>
- <code class="computeroutput"><span class="identifier">PHOENIX_DEFINE_EXPRESSION_EXT</span></code>
- is a macro that can be used to generate all the necessary boilerplate to
- create Phoenix Expressions
- </p>
-<a name="phoenix.inside.expression.phoenix_define_expression_ext.synopsis"></a><h6>
-<a name="id635655"></a>
- <a class="link" href="phoenix_define_expression_ext.html#phoenix.inside.expression.phoenix_define_expression_ext.synopsis">Synopsis</a>
- </h6>
-<pre class="programlisting"><span class="identifier">PHOENIX_DEFINE_EXPRESSION_EXT</span><span class="special">(</span>
- <span class="identifier">actor</span>
- <span class="special">,</span> <span class="special">(</span><span class="identifier">namespace_seq</span><span class="special">)(</span><span class="identifier">name</span><span class="special">)</span>
- <span class="special">,</span> <span class="special">(</span><span class="identifier">child_grammar0</span><span class="special">)</span>
- <span class="special">(</span><span class="identifier">child_grammar1</span><span class="special">)</span>
- <span class="special">...</span>
- <span class="special">(</span><span class="identifier">child_grammarN</span><span class="special">)</span>
- <span class="special">,</span> <span class="identifier">N</span>
-<span class="special">)</span>
-</pre>
-<a name="phoenix.inside.expression.phoenix_define_expression_ext.semantics"></a><h6>
-<a name="id635795"></a>
- <a class="link" href="phoenix_define_expression_ext.html#phoenix.inside.expression.phoenix_define_expression_ext.semantics">Semantics</a>
- </h6>
-<p>
- The above macro generates the necessary code for an expression <code class="computeroutput"><span class="identifier">name</span></code> in namespace <code class="computeroutput"><span class="identifier">namespace_seq</span></code>.
- The sequence of <code class="computeroutput"><span class="special">(</span><span class="identifier">child_grammarN</span><span class="special">)</span></code> declares how many children the expression
- will have and what <code class="computeroutput"><span class="identifier">proto</span><span class="special">::</span><span class="identifier">grammar</span></code>
- they match.
- </p>
-<p>
- The macro should be used at global scope. <code class="computeroutput"><span class="identifier">namespace_seq</span></code>
- shall be the sequence of namespaces under which the following symbols will
- be defined:
- </p>
-<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">tag</span>
-<span class="special">{</span>
- <span class="keyword">struct</span> <span class="identifier">name</span><span class="special">;</span>
-<span class="special">}</span>
-
-<span class="keyword">namespace</span> <span class="identifier">expression</span>
-<span class="special">{</span>
- <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">A0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span> <span class="special">...</span> <span class="keyword">typename</span> <span class="identifier">AN</span><span class="special">&gt;</span>
- <span class="keyword">struct</span> <span class="identifier">name</span>
- <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">expr_ext</span><span class="special">&lt;</span>
- <span class="identifier">actor</span>
- <span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">name</span>
- <span class="special">,</span> <span class="identifier">A0</span>
- <span class="special">,</span> <span class="identifier">A1</span>
- <span class="special">...</span>
- <span class="special">,</span> <span class="identifier">AN</span>
- <span class="special">&gt;</span>
-<span class="special">}</span>
-
-<span class="keyword">namespace</span> <span class="identifier">rule</span>
-<span class="special">{</span>
- <span class="keyword">struct</span> <span class="identifier">name</span>
- <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">expr</span><span class="special">&lt;</span>
- <span class="identifier">child_grammar0</span>
- <span class="special">,</span> <span class="identifier">child_grammar1</span>
- <span class="special">...</span>
- <span class="special">,</span> <span class="identifier">child_grammarN</span>
- <span class="special">&gt;</span>
- <span class="special">{};</span>
-<span class="special">}</span>
-</pre>
-<p>
- This macros also adds a specialization for <code class="computeroutput"><span class="identifier">meta_grammar</span><span class="special">::</span><span class="identifier">case_</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">name</span><span class="special">&gt;</span></code>.
- </p>
-<a name="phoenix.inside.expression.phoenix_define_expression_ext.header"></a><h6>
-<a name="id636294"></a>
- <a class="link" href="phoenix_define_expression_ext.html#phoenix.inside.expression.phoenix_define_expression_ext.header">Header</a>
- </h6>
-<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">expression</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-</pre>
-<a name="phoenix.inside.expression.phoenix_define_expression_ext.example"></a><h6>
-<a name="id636376"></a>
- <a class="link" href="phoenix_define_expression_ext.html#phoenix.inside.expression.phoenix_define_expression_ext.example">Example</a>
- </h6>
-<pre class="programlisting"><span class="identifier">PHOENIX_DEFINE_EXPRESSION_EXT</span><span class="special">(</span>
- <span class="identifier">if_actor</span>
- <span class="special">,</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">)(</span><span class="identifier">phoenix</span><span class="special">)(</span><span class="identifier">if_</span><span class="special">)</span>
- <span class="special">,</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Cond
-</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Then
-</span><span class="special">)</span>
-</pre>
-<p>
- This defines the if_ expression. The custom actor defines the <code class="computeroutput"><span class="identifier">else_</span></code>.
- </p>
-</div>
-<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2005, 2010 Joel de Guzman, Dan Marsden, Thomas Heller<p>
- 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)
- </p>
-</div></td>
-</tr></table>
-<hr>
-<div class="spirit-nav">
-<a accesskey="p" href="phoenix_define_expression_vararg.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expression.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="phoenix_define_expression_ext_vararg.html"><img src="../../../images/next.png" alt="Next"></a>
-</div>
-</body>
-</html>

Deleted: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_ext_vararg.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_ext_vararg.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
+++ (empty file)
@@ -1,121 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>PHOENIX_DEFINE_EXPRESSION_EXT_VARARG</title>
-<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
-<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Phoenix 3.0">
-<link rel="up" href="../expression.html" title="Phoenix Expressions">
-<link rel="prev" href="phoenix_define_expression_ext.html" title="PHOENIX_DEFINE_EXPRESSION_EXT">
-<link rel="next" href="../actions.html" title="More on Actions">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
-<hr>
-<div class="spirit-nav">
-<a accesskey="p" href="phoenix_define_expression_ext.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expression.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../actions.html"><img src="../../../images/next.png" alt="Next"></a>
-</div>
-<div class="section">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="phoenix.inside.expression.phoenix_define_expression_ext_vararg"></a><a class="link" href="phoenix_define_expression_ext_vararg.html" title="PHOENIX_DEFINE_EXPRESSION_EXT_VARARG">PHOENIX_DEFINE_EXPRESSION_EXT_VARARG</a>
-</h4></div></div></div>
-<a name="phoenix.inside.expression.phoenix_define_expression_ext_vararg.description"></a><h6>
-<a name="id636538"></a>
- <a class="link" href="phoenix_define_expression_ext_vararg.html#phoenix.inside.expression.phoenix_define_expression_ext_vararg.description">Description</a>
- </h6>
-<p>
- <code class="computeroutput"><span class="identifier">PHOENIX_DEFINE_EXPRESSION_EXT_VARARG</span></code>
- is a macro that can be used to generate all the necessary boilerplate to
- create Phoenix Expressions
- </p>
-<a name="phoenix.inside.expression.phoenix_define_expression_ext_vararg.synopsis"></a><h6>
-<a name="id636574"></a>
- <a class="link" href="phoenix_define_expression_ext_vararg.html#phoenix.inside.expression.phoenix_define_expression_ext_vararg.synopsis">Synopsis</a>
- </h6>
-<pre class="programlisting"><span class="identifier">PHOENIX_DEFINE_EXPRESSION_EXT_VARARG</span><span class="special">(</span>
- <span class="identifier">actor</span>
- <span class="special">,</span> <span class="special">(</span><span class="identifier">namespace_seq</span><span class="special">)(</span><span class="identifier">name</span><span class="special">)</span>
- <span class="special">,</span> <span class="special">(</span><span class="identifier">child_grammar0</span><span class="special">)</span>
- <span class="special">(</span><span class="identifier">child_grammar1</span><span class="special">)</span>
- <span class="special">...</span>
- <span class="special">(</span><span class="identifier">child_grammarN</span><span class="special">)</span>
- <span class="special">,</span> <span class="identifier">N</span>
-<span class="special">)</span>
-</pre>
-<a name="phoenix.inside.expression.phoenix_define_expression_ext_vararg.semantics"></a><h6>
-<a name="id636716"></a>
- <a class="link" href="phoenix_define_expression_ext_vararg.html#phoenix.inside.expression.phoenix_define_expression_ext_vararg.semantics">Semantics</a>
- </h6>
-<p>
- The above macro generates the necessary code for an expression <code class="computeroutput"><span class="identifier">name</span></code> in namespace <code class="computeroutput"><span class="identifier">namespace_seq</span></code>.
- <code class="computeroutput"><span class="identifier">N</span></code> is the maximum number
- of variable children. All but the last elements in the grammar sequence
- are required children of the expression, and the last denotes a variable
- number of children. The number of children an expression of this kind can
- hold is therefor <code class="computeroutput"><span class="identifier">N</span><span class="special">-</span><span class="number">1</span></code> plus the size of the sequence
- </p>
-<p>
- The macro should be used at global scope. <code class="computeroutput"><span class="identifier">namespace_seq</span></code>
- shall be the sequence of namespaces under which the following symbols will
- be defined:
- </p>
-<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">tag</span>
-<span class="special">{</span>
- <span class="keyword">struct</span> <span class="identifier">name</span><span class="special">;</span>
-<span class="special">}</span>
-
-<span class="keyword">namespace</span> <span class="identifier">expression</span>
-<span class="special">{</span>
- <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">A0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span> <span class="special">...</span> <span class="keyword">typename</span> <span class="identifier">AN</span><span class="special">&gt;</span>
- <span class="keyword">struct</span> <span class="identifier">name</span>
- <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">expr_ext</span><span class="special">&lt;</span>
- <span class="identifier">actor</span>
- <span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">name</span>
- <span class="special">,</span> <span class="identifier">A0</span>
- <span class="special">,</span> <span class="identifier">A1</span>
- <span class="special">...</span>
- <span class="special">,</span> <span class="identifier">AN</span>
- <span class="special">&gt;</span>
- <span class="special">{};</span>
-<span class="special">}</span>
-
-<span class="keyword">namespace</span> <span class="identifier">rule</span>
-<span class="special">{</span>
- <span class="keyword">struct</span> <span class="identifier">name</span>
- <span class="special">:</span> <span class="identifier">expression</span><span class="special">::</span><span class="identifier">name</span><span class="special">&lt;</span>
- <span class="identifier">child_grammar0</span>
- <span class="special">,</span> <span class="identifier">child_grammar1</span>
- <span class="special">...</span>
- <span class="special">,</span> <span class="identifier">proto</span><span class="special">::</span><span class="identifier">vararg</span><span class="special">&lt;</span><span class="identifier">child_grammarN</span><span class="special">&gt;</span>
- <span class="special">&gt;</span>
- <span class="special">{};</span>
-<span class="special">}</span>
-</pre>
-<a name="phoenix.inside.expression.phoenix_define_expression_ext_vararg.header"></a><h6>
-<a name="id637179"></a>
- <a class="link" href="phoenix_define_expression_ext_vararg.html#phoenix.inside.expression.phoenix_define_expression_ext_vararg.header">Header</a>
- </h6>
-<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">expression</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-</pre>
-<a name="phoenix.inside.expression.phoenix_define_expression_ext_vararg.example"></a><h6>
-<a name="id637262"></a>
- <a class="link" href="phoenix_define_expression_ext_vararg.html#phoenix.inside.expression.phoenix_define_expression_ext_vararg.example">Example</a>
- </h6>
-<p>
- TBD
- </p>
-</div>
-<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2005, 2010 Joel de Guzman, Dan Marsden, Thomas Heller<p>
- 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)
- </p>
-</div></td>
-</tr></table>
-<hr>
-<div class="spirit-nav">
-<a accesskey="p" href="phoenix_define_expression_ext.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expression.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="../actions.html"><img src="../../../images/next.png" alt="Next"></a>
-</div>
-</body>
-</html>

Deleted: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_vararg.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/inside/expression/phoenix_define_expression_vararg.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
+++ (empty file)
@@ -1,128 +0,0 @@
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
-<title>PHOENIX_DEFINE_EXPRESSION_VARARG</title>
-<link rel="stylesheet" href="../../../boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
-<link rel="home" href="../../../index.html" title="Chapter&#160;1.&#160;Phoenix 3.0">
-<link rel="up" href="../expression.html" title="Phoenix Expressions">
-<link rel="prev" href="phoenix_define_expression.html" title="PHOENIX_DEFINE_EXPRESSION">
-<link rel="next" href="phoenix_define_expression_ext.html" title="PHOENIX_DEFINE_EXPRESSION_EXT">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%"><tr><td valign="top"></td></tr></table>
-<hr>
-<div class="spirit-nav">
-<a accesskey="p" href="phoenix_define_expression.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expression.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="phoenix_define_expression_ext.html"><img src="../../../images/next.png" alt="Next"></a>
-</div>
-<div class="section">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="phoenix.inside.expression.phoenix_define_expression_vararg"></a><a class="link" href="phoenix_define_expression_vararg.html" title="PHOENIX_DEFINE_EXPRESSION_VARARG">PHOENIX_DEFINE_EXPRESSION_VARARG</a>
-</h4></div></div></div>
-<a name="phoenix.inside.expression.phoenix_define_expression_vararg.description"></a><h6>
-<a name="id634739"></a>
- <a class="link" href="phoenix_define_expression_vararg.html#phoenix.inside.expression.phoenix_define_expression_vararg.description">Description</a>
- </h6>
-<p>
- <code class="computeroutput"><span class="identifier">PHOENIX_DEFINE_EXPRESSION_VARARG</span></code>
- is a macro that can be used to generate all the necessary boilerplate to
- create Phoenix Expressions
- </p>
-<a name="phoenix.inside.expression.phoenix_define_expression_vararg.synopsis"></a><h6>
-<a name="id634775"></a>
- <a class="link" href="phoenix_define_expression_vararg.html#phoenix.inside.expression.phoenix_define_expression_vararg.synopsis">Synopsis</a>
- </h6>
-<pre class="programlisting"><span class="identifier">PHOENIX_DEFINE_EXPRESSION_VARARG</span><span class="special">(</span>
- <span class="special">(</span><span class="identifier">namespace_seq</span><span class="special">)(</span><span class="identifier">name</span><span class="special">)</span>
- <span class="special">,</span> <span class="special">(</span><span class="identifier">child_grammar0</span><span class="special">)</span>
- <span class="special">(</span><span class="identifier">child_grammar1</span><span class="special">)</span>
- <span class="special">...</span>
- <span class="special">(</span><span class="identifier">child_grammarN</span><span class="special">)</span>
- <span class="special">,</span> <span class="identifier">N</span>
-<span class="special">)</span>
-</pre>
-<a name="phoenix.inside.expression.phoenix_define_expression_vararg.semantics"></a><h6>
-<a name="id634906"></a>
- <a class="link" href="phoenix_define_expression_vararg.html#phoenix.inside.expression.phoenix_define_expression_vararg.semantics">Semantics</a>
- </h6>
-<p>
- The above macro generates the necessary code for an expression <code class="computeroutput"><span class="identifier">name</span></code> in namespace <code class="computeroutput"><span class="identifier">namespace_seq</span></code>.
- <code class="computeroutput"><span class="identifier">N</span></code> is the maximum number
- of variable children. All but the last elements in the grammar sequence
- are required children of the expression, and the last denotes a variable
- number of children. The number of children an expression of this kind can
- hold is therefor <code class="computeroutput"><span class="identifier">N</span><span class="special">-</span><span class="number">1</span></code> plus the size of the sequence
- </p>
-<p>
- The macro should be used at global scope. <code class="computeroutput"><span class="identifier">namespace_seq</span></code>
- shall be the sequence of namespaces under which the following symbols will
- be defined:
- </p>
-<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">tag</span>
-<span class="special">{</span>
- <span class="keyword">struct</span> <span class="identifier">name</span><span class="special">;</span>
-<span class="special">}</span>
-
-<span class="keyword">namespace</span> <span class="identifier">expression</span>
-<span class="special">{</span>
- <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">A0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">A1</span> <span class="special">...</span> <span class="keyword">typename</span> <span class="identifier">AN</span><span class="special">&gt;</span>
- <span class="keyword">struct</span> <span class="identifier">name</span>
- <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">expr</span><span class="special">&lt;</span>
- <span class="identifier">tag</span><span class="special">::</span><span class="identifier">name</span>
- <span class="special">,</span> <span class="identifier">A0</span>
- <span class="special">,</span> <span class="identifier">A1</span>
- <span class="special">...</span>
- <span class="special">,</span> <span class="identifier">AN</span>
- <span class="special">&gt;</span>
- <span class="special">{};</span>
-<span class="special">}</span>
-
-<span class="keyword">namespace</span> <span class="identifier">rule</span>
-<span class="special">{</span>
- <span class="keyword">struct</span> <span class="identifier">name</span>
- <span class="special">:</span> <span class="identifier">expression</span><span class="special">::</span><span class="identifier">name</span><span class="special">&lt;</span>
- <span class="identifier">child_grammar0</span>
- <span class="special">,</span> <span class="identifier">child_grammar1</span>
- <span class="special">...</span>
- <span class="special">,</span> <span class="identifier">proto</span><span class="special">::</span><span class="identifier">vararg</span><span class="special">&lt;</span><span class="identifier">child_grammarN</span><span class="special">&gt;</span>
- <span class="special">&gt;</span>
- <span class="special">{};</span>
-<span class="special">}</span>
-</pre>
-<a name="phoenix.inside.expression.phoenix_define_expression_vararg.header"></a><h6>
-<a name="id635358"></a>
- <a class="link" href="phoenix_define_expression_vararg.html#phoenix.inside.expression.phoenix_define_expression_vararg.header">Header</a>
- </h6>
-<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">/</span><span class="identifier">expression</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
-</pre>
-<a name="phoenix.inside.expression.phoenix_define_expression_vararg.example"></a><h6>
-<a name="id635440"></a>
- <a class="link" href="phoenix_define_expression_vararg.html#phoenix.inside.expression.phoenix_define_expression_vararg.example">Example</a>
- </h6>
-<pre class="programlisting"><span class="identifier">PHOENIX_DEFINE_EXPRESSION_VARARG</span><span class="special">(</span>
- <span class="special">(</span><span class="identifier">boost</span><span class="special">)(</span><span class="identifier">phoenix</span><span class="special">)(</span><span class="identifier">mem_fun_ptr</span><span class="special">)</span>
- <span class="special">,</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Pointer to Object
-</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Member pointer
-</span> <span class="special">(</span><span class="identifier">meta_grammar</span><span class="special">)</span> <span class="comment">// Variable number of arguments
-</span> <span class="special">,</span> <span class="identifier">PHOENIX_LIMIT</span>
-<span class="special">)</span>
-</pre>
-<p>
- This defines the member function pointer operator expression as described
- in <a class="link" href="../../modules/operator.html" title="Operator">operators</a>.
- </p>
-</div>
-<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"></td>
-<td align="right"><div class="copyright-footer">Copyright &#169; 2002-2005, 2010 Joel de Guzman, Dan Marsden, Thomas Heller<p>
- 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)
- </p>
-</div></td>
-</tr></table>
-<hr>
-<div class="spirit-nav">
-<a accesskey="p" href="phoenix_define_expression.html"><img src="../../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../expression.html"><img src="../../../images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../images/home.png" alt="Home"></a><a accesskey="n" href="phoenix_define_expression_ext.html"><img src="../../../images/next.png" alt="Next"></a>
-</div>
-</body>
-</html>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/arguments.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/arguments.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/arguments.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -31,7 +31,7 @@
           an imaginary data-bin where a function argument will be placed.
         </p>
 <a name="phoenix.modules.core.arguments.predefined_arguments"></a><h6>
-<a name="id602433"></a>
+<a name="id763747"></a>
           <a class="link" href="arguments.html#phoenix.modules.core.arguments.predefined_arguments">Predefined
           Arguments</a>
         </h6>
@@ -68,14 +68,14 @@
 <th align="left">Note</th>
 </tr>
 <tr><td align="left" valign="top"><p>
- You can set <code class="computeroutput"><span class="identifier">PHOENIX_ARG_LIMIT</span></code>,
- the predefined maximum placeholder index. By default, <code class="computeroutput"><span class="identifier">PHOENIX_ARG_LIMIT</span></code>
- is set to <code class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></code>
+ You can set <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_ARG_LIMIT</span></code>,
+ the predefined maximum placeholder index. By default, <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_ARG_LIMIT</span></code>
+ is set to <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_LIMIT</span></code>
             (See <a class="link" href="../../actor.html" title="Actor">Actor</a>).
           </p></td></tr>
 </table></div>
 <a name="phoenix.modules.core.arguments.user_defined_arguments"></a><h6>
-<a name="id602958"></a>
+<a name="id764273"></a>
           <a class="link" href="arguments.html#phoenix.modules.core.arguments.user_defined_arguments">User
           Defined Arguments</a>
         </h6>
@@ -97,7 +97,7 @@
 <pre class="programlisting"><span class="identifier">add</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">,</span> <span class="number">6</span><span class="special">)</span>
 </pre>
 <a name="phoenix.modules.core.arguments.evaluating_an_argument"></a><h6>
-<a name="id603110"></a>
+<a name="id764424"></a>
           <a class="link" href="arguments.html#phoenix.modules.core.arguments.evaluating_an_argument">Evaluating
           an Argument</a>
         </h6>
@@ -124,7 +124,7 @@
 <span class="identifier">Hello</span> <span class="identifier">World</span>
 </pre>
 <a name="phoenix.modules.core.arguments.extra_arguments"></a><h6>
-<a name="id603407"></a>
+<a name="id764721"></a>
           <a class="link" href="arguments.html#phoenix.modules.core.arguments.extra_arguments">Extra Arguments</a>
         </h6>
 <p>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/references.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/references.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/references.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -59,7 +59,7 @@
 <pre class="programlisting"><span class="identifier">add_assign</span><span class="special">(</span><span class="identifier">ref</span><span class="special">(</span><span class="identifier">i</span><span class="special">),</span> <span class="number">2</span><span class="special">)</span>
 </pre>
 <a name="phoenix.modules.core.references.evaluating_a_reference"></a><h6>
-<a name="id602031"></a>
+<a name="id763345"></a>
           <a class="link" href="references.html#phoenix.modules.core.references.evaluating_a_reference">Evaluating
           a Reference</a>
         </h6>
@@ -75,7 +75,7 @@
           prints out "3 Hello World"
         </p>
 <a name="phoenix.modules.core.references.constant_references"></a><h6>
-<a name="id602167"></a>
+<a name="id763481"></a>
           <a class="link" href="references.html#phoenix.modules.core.references.constant_references">Constant
           References</a>
         </h6>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/values.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/values.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/core/values.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -47,7 +47,7 @@
           but, as we'll see later on, there are situations where this is unavoidable.
         </p>
 <a name="phoenix.modules.core.values.evaluating_a_value"></a><h3>
-<a name="id601549"></a>
+<a name="id762863"></a>
           <a class="link" href="values.html#phoenix.modules.core.values.evaluating_a_value">Evaluating
           a Value</a>
         </h3>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/object/construction.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/object/construction.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/object/construction.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -50,9 +50,9 @@
 </tr>
 <tr><td align="left" valign="top"><p>
             The maximum number of actual parameters is limited by the preprocessor
- constant PHOENIX_COMPOSITE_LIMIT. Note though, that this limit should
- not be greater than PHOENIX_LIMIT. By default, <code class="computeroutput"><span class="identifier">PHOENIX_COMPOSITE_LIMIT</span></code>
- is set to <code class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></code>
+ constant BOOST_PHOENIX_COMPOSITE_LIMIT. Note though, that this limit
+ should not be greater than BOOST_PHOENIX_LIMIT. By default, <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_COMPOSITE_LIMIT</span></code> is set
+ to <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_LIMIT</span></code>
             (See <a class="link" href="../../actor.html" title="Actor">Actor</a>).
           </p></td></tr>
 </table></div>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/object/new.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/object/new.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/object/new.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -50,9 +50,9 @@
 </tr>
 <tr><td align="left" valign="top"><p>
             The maximum number of actual parameters is limited by the preprocessor
- constant PHOENIX_COMPOSITE_LIMIT. Note though, that this limit should
- not be greater than PHOENIX_LIMIT. By default, <code class="computeroutput"><span class="identifier">PHOENIX_COMPOSITE_LIMIT</span></code>
- is set to <code class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></code>
+ constant BOOST_PHOENIX_COMPOSITE_LIMIT. Note though, that this limit
+ should not be greater than BOOST_PHOENIX_LIMIT. By default, <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_COMPOSITE_LIMIT</span></code> is set
+ to <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_LIMIT</span></code>
             (See <a class="link" href="../../actor.html" title="Actor">Actor</a>).
           </p></td></tr>
 </table></div>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/operator.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/operator.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/operator.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -134,18 +134,18 @@
 </span><span class="identifier">val</span><span class="special">(</span><span class="number">1</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="number">3</span><span class="special">;</span> <span class="comment">// Lazily evaluated
 </span></pre>
 <a name="phoenix.modules.operator.supported_operators"></a><h5>
-<a name="id605776"></a>
+<a name="id767090"></a>
         <a class="link" href="operator.html#phoenix.modules.operator.supported_operators">Supported operators</a>
       </h5>
 <a name="phoenix.modules.operator.unary_operators"></a><h5>
-<a name="id605795"></a>
+<a name="id767109"></a>
         <a class="link" href="operator.html#phoenix.modules.operator.unary_operators">Unary operators</a>
       </h5>
 <pre class="programlisting"><span class="identifier">prefix</span><span class="special">:</span> <span class="special">~,</span> <span class="special">!,</span> <span class="special">-,</span> <span class="special">+,</span> <span class="special">++,</span> <span class="special">--,</span> <span class="special">&amp;</span> <span class="special">(</span><span class="identifier">reference</span><span class="special">),</span> <span class="special">*</span> <span class="special">(</span><span class="identifier">dereference</span><span class="special">)</span>
 <span class="identifier">postfix</span><span class="special">:</span> <span class="special">++,</span> <span class="special">--</span>
 </pre>
 <a name="phoenix.modules.operator.binary_operators"></a><h5>
-<a name="id605926"></a>
+<a name="id767240"></a>
         <a class="link" href="operator.html#phoenix.modules.operator.binary_operators">Binary operators</a>
       </h5>
 <pre class="programlisting"><span class="special">=,</span> <span class="special">[],</span> <span class="special">+=,</span> <span class="special">-=,</span> <span class="special">*=,</span> <span class="special">/=,</span> <span class="special">%=,</span> <span class="special">&amp;=,</span> <span class="special">|=,</span> <span class="special">^=,</span> <span class="special">&lt;&lt;=,</span> <span class="special">&gt;&gt;=</span>
@@ -154,7 +154,7 @@
 <span class="special">&amp;&amp;,</span> <span class="special">||,</span> <span class="special">-&gt;*</span>
 </pre>
 <a name="phoenix.modules.operator.ternary_operator"></a><h5>
-<a name="id606127"></a>
+<a name="id767441"></a>
         <a class="link" href="operator.html#phoenix.modules.operator.ternary_operator">Ternary operator</a>
       </h5>
 <pre class="programlisting"><span class="identifier">if_else</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span> <span class="identifier">b</span><span class="special">)</span>
@@ -167,7 +167,7 @@
         albeit in a lazy manner.
       </p>
 <a name="phoenix.modules.operator.member_pointer_operator"></a><h5>
-<a name="id606228"></a>
+<a name="id767542"></a>
         <a class="link" href="operator.html#phoenix.modules.operator.member_pointer_operator">Member pointer
         operator</a>
       </h5>
@@ -208,7 +208,7 @@
 <span class="special">(</span><span class="identifier">arg1</span><span class="special">-&gt;*&amp;</span><span class="identifier">A</span><span class="special">::</span><span class="identifier">func</span><span class="special">)(</span><span class="identifier">arg2</span><span class="special">)(</span><span class="identifier">a</span><span class="special">,</span> <span class="identifier">i</span><span class="special">);</span> <span class="comment">// returns a-&gt;func(i)
 </span></pre>
 <a name="phoenix.modules.operator.include_files"></a><h5>
-<a name="id606608"></a>
+<a name="id767922"></a>
         <a class="link" href="operator.html#phoenix.modules.operator.include_files">Include Files</a>
       </h5>
 <div class="informaltable"><table class="table">

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/scope/lambda.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/scope/lambda.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/scope/lambda.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -62,7 +62,7 @@
 <p>
           Like <code class="computeroutput"><span class="identifier">let</span></code>, local variables
           may be declared, allowing 1..N local variable declarations (where N ==
- <code class="computeroutput"><span class="identifier">PHOENIX_LOCAL_LIMIT</span></code>):
+ <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_LOCAL_LIMIT</span></code>):
         </p>
 <pre class="programlisting"><span class="identifier">lambda</span><span class="special">(</span><span class="identifier">local</span><span class="special">-</span><span class="identifier">declarations</span><span class="special">)</span>
 <span class="special">[</span>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/scope/let.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/scope/let.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/scope/let.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -31,7 +31,7 @@
 </pre>
 <p>
           <code class="computeroutput"><span class="identifier">let</span></code> allows 1..N local variable
- declarations (where N == <code class="computeroutput"><span class="identifier">PHOENIX_LOCAL_LIMIT</span></code>).
+ declarations (where N == <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_LOCAL_LIMIT</span></code>).
           Each declaration follows the form:
         </p>
 <pre class="programlisting"><span class="identifier">local</span><span class="special">-</span><span class="identifier">id</span> <span class="special">=</span> <span class="identifier">lambda</span><span class="special">-</span><span class="identifier">expression</span>
@@ -42,10 +42,10 @@
 <th align="left">Note</th>
 </tr>
 <tr><td align="left" valign="top"><p>
- You can set <code class="computeroutput"><span class="identifier">PHOENIX_LOCAL_LIMIT</span></code>,
+ You can set <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_LOCAL_LIMIT</span></code>,
             the predefined maximum local variable declarations in a let expression.
- By default, <code class="computeroutput"><span class="identifier">PHOENIX_LOCAL_LIMIT</span></code>
- is set to <code class="computeroutput"><span class="identifier">PHOENIX_LIMIT</span></code>.
+ By default, <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_LOCAL_LIMIT</span></code>
+ is set to <code class="computeroutput"><span class="identifier">BOOST_PHOENIX_LIMIT</span></code>.
           </p></td></tr>
 </table></div>
 <p>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/stl/algorithm.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/stl/algorithm.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/stl/algorithm.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -73,7 +73,7 @@
         </p>
 </div>
 <div class="table">
-<a name="id620497"></a><p class="title"><b>Table&#160;1.6.&#160;Iteration Algorithms</b></p>
+<a name="id781812"></a><p class="title"><b>Table&#160;1.6.&#160;Iteration Algorithms</b></p>
 <div class="table-contents"><table class="table" summary="Iteration Algorithms">
 <colgroup>
 <col>
@@ -128,7 +128,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id620776"></a><p class="title"><b>Table&#160;1.7.&#160;Querying Algorithms</b></p>
+<a name="id782091"></a><p class="title"><b>Table&#160;1.7.&#160;Querying Algorithms</b></p>
 <div class="table-contents"><table class="table" summary="Querying Algorithms">
 <colgroup>
 <col>
@@ -441,7 +441,7 @@
 </table></div>
 </div>
 <br class="table-break"><div class="table">
-<a name="id623248"></a><p class="title"><b>Table&#160;1.8.&#160;Transformation Algorithms</b></p>
+<a name="id784563"></a><p class="title"><b>Table&#160;1.8.&#160;Transformation Algorithms</b></p>
 <div class="table-contents"><table class="table" summary="Transformation Algorithms">
 <colgroup>
 <col>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/stl/container.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/stl/container.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/modules/stl/container.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -137,7 +137,7 @@
           does not use the member "dot" syntax.
         </p>
 <div class="table">
-<a name="id617446"></a><p class="title"><b>Table&#160;1.4.&#160;Sample usage</b></p>
+<a name="id778761"></a><p class="title"><b>Table&#160;1.4.&#160;Sample usage</b></p>
 <div class="table-contents"><table class="table" summary="Sample usage">
 <colgroup>
 <col>
@@ -215,7 +215,7 @@
         </p>
 </div>
 <div class="table">
-<a name="id617786"></a><p class="title"><b>Table&#160;1.5.&#160;Lazy STL Container Functions</b></p>
+<a name="id779101"></a><p class="title"><b>Table&#160;1.5.&#160;Lazy STL Container Functions</b></p>
 <div class="table-contents"><table class="table" summary="Lazy STL Container Functions">
 <colgroup>
 <col>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/organization.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/organization.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/organization.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -52,7 +52,7 @@
       files. There are no object files to link against.
     </p>
 <a name="phoenix.organization.core"></a><h3>
-<a name="id599879"></a>
+<a name="id761193"></a>
       <a class="link" href="organization.html#phoenix.organization.core">Core</a>
     </h3>
 <p>
@@ -72,7 +72,7 @@
       can again be another expression.
     </p>
 <div class="table">
-<a name="id599918"></a><p class="title"><b>Table&#160;1.2.&#160;Modules</b></p>
+<a name="id761232"></a><p class="title"><b>Table&#160;1.2.&#160;Modules</b></p>
 <div class="table-contents"><table class="table" summary="Modules">
 <colgroup>
 <col>
@@ -200,7 +200,7 @@
       core module is defined in <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">phoenix</span><span class="special">/</span><span class="identifier">core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>.
     </p>
 <div class="table">
-<a name="id600205"></a><p class="title"><b>Table&#160;1.3.&#160;Includes</b></p>
+<a name="id761520"></a><p class="title"><b>Table&#160;1.3.&#160;Includes</b></p>
 <div class="table-contents"><table class="table" summary="Includes">
 <colgroup>
 <col>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -52,7 +52,7 @@
       into high gear quickly.
     </p>
 <a name="phoenix.starter_kit.functors_everywhere"></a><h4>
-<a name="id595098"></a>
+<a name="id756412"></a>
       <a class="link" href="starter_kit.html#phoenix.starter_kit.functors_everywhere">Functors everywhere</a>
     </h4>
 <p>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/lazy_functions.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/lazy_functions.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/lazy_functions.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -45,7 +45,7 @@
 <span class="identifier">function</span><span class="special">&lt;</span><span class="identifier">is_odd_impl</span><span class="special">&gt;</span> <span class="identifier">is_odd</span><span class="special">;</span>
 </pre>
 <a name="phoenix.starter_kit.lazy_functions.things_to_note_"></a><h5>
-<a name="id597899"></a>
+<a name="id759213"></a>
         <a class="link" href="lazy_functions.html#phoenix.starter_kit.lazy_functions.things_to_note_">Things
         to note:</a>
       </h5>
@@ -75,7 +75,7 @@
         (See function.cpp)
       </p>
 <a name="phoenix.starter_kit.lazy_functions.predefined_lazy_functions"></a><h5>
-<a name="id598077"></a>
+<a name="id759391"></a>
         <a class="link" href="lazy_functions.html#phoenix.starter_kit.lazy_functions.predefined_lazy_functions">Predefined
         Lazy Functions</a>
       </h5>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/lazy_operators.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/lazy_operators.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/lazy_operators.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -69,7 +69,7 @@
       </p>
 </div>
 <a name="phoenix.starter_kit.lazy_operators.first_practical_example"></a><h5>
-<a name="id596826"></a>
+<a name="id758140"></a>
         <a class="link" href="lazy_operators.html#phoenix.starter_kit.lazy_operators.first_practical_example">First
         Practical Example</a>
       </h5>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/values.html
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/values.html (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/html/phoenix/starter_kit/values.html 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -32,7 +32,7 @@
         World"</span></code>.
       </p>
 <a name="phoenix.starter_kit.values.lazy_evaluation"></a><h5>
-<a name="id595262"></a>
+<a name="id756576"></a>
         <a class="link" href="values.html#phoenix.starter_kit.values.lazy_evaluation">Lazy Evaluation</a>
       </h5>
 <p>
@@ -64,7 +64,7 @@
         anything and defers the evaluation for later.
       </p>
 <a name="phoenix.starter_kit.values.callbacks"></a><h5>
-<a name="id595487"></a>
+<a name="id756801"></a>
         <a class="link" href="values.html#phoenix.starter_kit.values.callbacks">Callbacks</a>
       </h5>
 <p>

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/actor.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/actor.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/actor.qbk 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -17,8 +17,8 @@
 An `Actor` contains a valid Phoenix Expression, a call to one of the function
 call operator overloads, starts the evaluation process.
 
-[note You can set `PHOENIX_LIMIT`, the predefined maximum arity an
-actor can take. By default, `PHOENIX_LIMIT` is set to 10.]
+[note You can set `BOOST_PHOENIX_LIMIT`, the predefined maximum arity an
+actor can take. By default, `BOOST_PHOENIX_LIMIT` is set to 10.]
 
 The `actor` template class models the `Actor` concept:
 
@@ -63,13 +63,13 @@
 
 [heading Function Call Operators]
 
-There are 2*N function call operators for 0 to N arguments (N == `PHOENIX_LIMIT`).
+There are 2*N function call operators for 0 to N arguments (N == `BOOST_PHOENIX_LIMIT`).
 The actor class accepts the arguments and forwards the arguments to the default
 evaluation action.
 
 Additionally, there exist function call operators accepting permutations of const
 and non-const references. These operators are created for all N <=
-`PHOENIX_PERFECT_FORWARD_LIMIT` (which defaults to 3).
+`BOOST_PHOENIX_PERFECT_FORWARD_LIMIT` (which defaults to 3).
 
 [def [$http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1385.htm]
 

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/expression.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/expression.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/inside/expression.qbk 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -147,16 +147,16 @@
 * an expression type in namespace expression
 ]
 
-[section PHOENIX_DEFINE_EXPRESSION]
+[section BOOST_PHOENIX_DEFINE_EXPRESSION]
 
 [heading Description]
 
-`PHOENIX_DEFINE_EXPRESSION` is a macro that can be used to generate all the
+`BOOST_PHOENIX_DEFINE_EXPRESSION` is a macro that can be used to generate all the
 necessary boilerplate to create Phoenix Expressions
 
 [heading Synopsis]
     
- PHOENIX_DEFINE_EXPRESSION(
+ BOOST_PHOENIX_DEFINE_EXPRESSION(
         (namespace_seq)(name)
       , (child_grammar0)
         (child_grammar1)
@@ -227,16 +227,16 @@
 
 [endsect]
 
-[section PHOENIX_DEFINE_EXPRESSION_VARARG]
+[section BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG]
 
 [heading Description]
 
-`PHOENIX_DEFINE_EXPRESSION_VARARG` is a macro that can be used to generate all the
+`BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG` is a macro that can be used to generate all the
 necessary boilerplate to create Phoenix Expressions
 
 [heading Synopsis]
     
- PHOENIX_DEFINE_EXPRESSION_VARARG(
+ BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG(
         (namespace_seq)(name)
       , (child_grammar0)
         (child_grammar1)
@@ -294,12 +294,12 @@
 
 [heading Example]
 
- PHOENIX_DEFINE_EXPRESSION_VARARG(
+ BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG(
         (boost)(phoenix)(mem_fun_ptr)
       , (meta_grammar) // Pointer to Object
         (meta_grammar) // Member pointer
         (meta_grammar) // Variable number of arguments
- , PHOENIX_LIMIT
+ , BOOST_PHOENIX_LIMIT
     )
 
 This defines the member function pointer operator expression as described in
@@ -307,16 +307,16 @@
 
 [endsect]
 
-[section PHOENIX_DEFINE_EXPRESSION_EXT]
+[section BOOST_PHOENIX_DEFINE_EXPRESSION_EXT]
 
 [heading Description]
 
-`PHOENIX_DEFINE_EXPRESSION_EXT` is a macro that can be used to generate all the
+`BOOST_PHOENIX_DEFINE_EXPRESSION_EXT` is a macro that can be used to generate all the
 necessary boilerplate to create Phoenix Expressions
 
 [heading Synopsis]
     
- PHOENIX_DEFINE_EXPRESSION_EXT(
+ BOOST_PHOENIX_DEFINE_EXPRESSION_EXT(
         actor
       , (namespace_seq)(name)
       , (child_grammar0)
@@ -374,7 +374,7 @@
 
 [heading Example]
 
- PHOENIX_DEFINE_EXPRESSION_EXT(
+ BOOST_PHOENIX_DEFINE_EXPRESSION_EXT(
         if_actor
       , (boost)(phoenix)(if_)
       , (meta_grammar) // Cond
@@ -385,16 +385,16 @@
 
 [endsect]
 
-[section PHOENIX_DEFINE_EXPRESSION_EXT_VARARG]
+[section BOOST_PHOENIX_DEFINE_EXPRESSION_EXT_VARARG]
 
 [heading Description]
 
-`PHOENIX_DEFINE_EXPRESSION_EXT_VARARG` is a macro that can be used to generate all the
+`BOOST_PHOENIX_DEFINE_EXPRESSION_EXT_VARARG` is a macro that can be used to generate all the
 necessary boilerplate to create Phoenix Expressions
 
 [heading Synopsis]
     
- PHOENIX_DEFINE_EXPRESSION_EXT_VARARG(
+ BOOST_PHOENIX_DEFINE_EXPRESSION_EXT_VARARG(
         actor
       , (namespace_seq)(name)
       , (child_grammar0)

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/modules/core.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/modules/core.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/modules/core.qbk 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -145,8 +145,8 @@
         expression::argument<2>::type const _3 = {};
     }
 
-[note You can set `PHOENIX_ARG_LIMIT`, the predefined maximum
-placeholder index. By default, `PHOENIX_ARG_LIMIT` is set to `PHOENIX_LIMIT`
+[note You can set `BOOST_PHOENIX_ARG_LIMIT`, the predefined maximum
+placeholder index. By default, `BOOST_PHOENIX_ARG_LIMIT` is set to `BOOST_PHOENIX_LIMIT`
 (See [link phoenix.actor Actor]).]
 
 [heading User Defined Arguments]

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/modules/object.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/modules/object.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/modules/object.qbk 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -9,9 +9,9 @@
 
 [def __limit_note__
 The maximum number of actual parameters is limited by the
-preprocessor constant PHOENIX_COMPOSITE_LIMIT. Note though, that this limit
-should not be greater than PHOENIX_LIMIT. By default, `PHOENIX_COMPOSITE_LIMIT`
-is set to `PHOENIX_LIMIT` (See [link phoenix.actor Actor]).
+preprocessor constant BOOST_PHOENIX_COMPOSITE_LIMIT. Note though, that this limit
+should not be greater than BOOST_PHOENIX_LIMIT. By default, `BOOST_PHOENIX_COMPOSITE_LIMIT`
+is set to `BOOST_PHOENIX_LIMIT` (See [link phoenix.actor Actor]).
 ]
 
 [section Object]

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/modules/scope.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/modules/scope.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/modules/scope.qbk 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -60,13 +60,13 @@
     ]
 
 `let` allows 1..N local variable declarations (where N ==
-`PHOENIX_LOCAL_LIMIT`). Each declaration follows the form:
+`BOOST_PHOENIX_LOCAL_LIMIT`). Each declaration follows the form:
 
     local-id = lambda-expression
 
-[note You can set `PHOENIX_LOCAL_LIMIT`, the predefined maximum local
-variable declarations in a let expression. By default, `PHOENIX_LOCAL_LIMIT` is
-set to `PHOENIX_LIMIT`.]
+[note You can set `BOOST_PHOENIX_LOCAL_LIMIT`, the predefined maximum local
+variable declarations in a let expression. By default, `BOOST_PHOENIX_LOCAL_LIMIT` is
+set to `BOOST_PHOENIX_LIMIT`.]
 
 Example:
 
@@ -203,7 +203,7 @@
     ]
 
 Like `let`, local variables may be declared, allowing 1..N local variable
-declarations (where N == `PHOENIX_LOCAL_LIMIT`):
+declarations (where N == `BOOST_PHOENIX_LOCAL_LIMIT`):
 
     lambda(local-declarations)
     [

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference.qbk 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -336,7 +336,7 @@
 
 [endsect]
 
-[section:phoenix_define_expression `PHOENIX_DEFINE_EXPRESSION`]
+[section:phoenix_define_expression `BOOST_PHOENIX_DEFINE_EXPRESSION`]
 
 [heading Description]
 
@@ -349,7 +349,7 @@
 [heading Examples]
 [endsect]
 
-[section:phoenix_define_expression_vararg `PHOENIX_DEFINE_EXPRESSION_VARARG`]
+[section:phoenix_define_expression_vararg `BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG`]
 
 [heading Description]
 
@@ -362,7 +362,7 @@
 [heading Examples]
 [endsect]
 
-[section:phoenix_define_expression_ext `PHOENIX_DEFINE_EXPRESSION_EXT`]
+[section:phoenix_define_expression_ext `BOOST_PHOENIX_DEFINE_EXPRESSION_EXT`]
 
 [heading Description]
 
@@ -375,7 +375,7 @@
 [heading Examples]
 [endsect]
 
-[section:phoenix_define_expression_vararg_ext `PHOENIX_DEFINE_EXPRESSION_VARARG_EXT`]
+[section:phoenix_define_expression_vararg_ext `BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG_EXT`]
 
 [heading Description]
 
@@ -637,8 +637,8 @@
 `arg1`..`argN`, and its __bll__ counterpart `_1`..`_N`. (where N is a predefined
 maximum).
 
-[note You can set `PHOENIX_ARG_LIMIT`, the predefined maximum
-placeholder index. By default, `PHOENIX_ARG_LIMIT` is set to `PHOENIX_LIMIT`
+[note You can set `BOOST_PHOENIX_ARG_LIMIT`, the predefined maximum
+placeholder index. By default, `BOOST_PHOENIX_ARG_LIMIT` is set to `BOOST_PHOENIX_LIMIT`
 (See [link phoenix.reference.concepts.actor Actor]).]
 
 [heading Synopsis]

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/actor.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/actor.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/actor.qbk 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -10,10 +10,10 @@
 [section Actor]
 
 The `Actor` is the main concept behind the library. Actors are function objects.
-An actor can accept 0 to `PHOENIX_LIMIT` arguments.
+An actor can accept 0 to `BOOST_PHOENIX_LIMIT` arguments.
 
-[note You can set `PHOENIX_LIMIT`, the predefined maximum arity an
-actor can take. By default, `PHOENIX_LIMIT` is set to 10.]
+[note You can set `BOOST_PHOENIX_LIMIT`, the predefined maximum arity an
+actor can take. By default, `BOOST_PHOENIX_LIMIT` is set to 10.]
 
 Phoenix supplies an `actor` class template whose specializations
 model the `Actor` concept. `actor` has one template parameter, `Expr`,
@@ -37,7 +37,7 @@
     };
 
 The actor class accepts the arguments through a set of function call operators
-for 0 to `PHOENIX_LIMIT` arities (Don't worry about the details, for now. Note, for example,
+for 0 to `BOOST_PHOENIX_LIMIT` arities (Don't worry about the details, for now. Note, for example,
 that we skimp over the details regarding `return_type`). The arguments
 are then forwarded to the actor's `Expr` for evaluation.
 

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/composite.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/composite.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/composite.qbk 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -19,9 +19,9 @@
 A composite is-a tuple of 0..N actors. N is the predefined maximum actors a
 composite can take.
 
-[note You can set `PHOENIX_COMPOSITE_LIMIT`, the predefined maximum
-actors a composite can take. By default, `PHOENIX_COMPOSITE_LIMIT` is set to
-`PHOENIX_LIMIT` (See [link phoenix.reference.actor Actor]).]
+[note You can set `BOOST_PHOENIX_COMPOSITE_LIMIT`, the predefined maximum
+actors a composite can take. By default, `BOOST_PHOENIX_COMPOSITE_LIMIT` is set to
+`BOOST_PHOENIX_LIMIT` (See [link phoenix.reference.actor Actor]).]
 
 In Phoenix, every actor is a composite. Phoenix is designed in a way that
 expressions form something like a S-Expr structure. This means that the main

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts/actor.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts/actor.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/concepts/actor.qbk 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -13,14 +13,14 @@
 
 The Actor is the main concept behind the library.
 
-Actors are TR1 function objects and can accept 0 to `PHOENIX_LIMIT` arguments.
+Actors are TR1 function objects and can accept 0 to `BOOST_PHOENIX_LIMIT` arguments.
 An Actor is responsible for setting up the __phoenix_concept_environment__ which
 is then passed to the __phoenix_concept_evaluator__.
 Every Actor needs to somehow embed the expression it is supposed to evaluate.
 An Actor itself is required to be a valid Expression.
 
-[note You can set `PHOENIX_LIMIT`, the predefined maximum arity an
-actor can take. By default, `PHOENIX_LIMIT` is set to 10.]
+[note You can set `BOOST_PHOENIX_LIMIT`, the predefined maximum arity an
+actor can take. By default, `BOOST_PHOENIX_LIMIT` is set to 10.]
 
 
 [variablelist Notation

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/core.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/core.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/core.qbk 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -134,8 +134,8 @@
     make_argument<mpl::int_<1> >::type const _2 = {};
     make_argument<mpl::int_<2> >::type const _3 = {};
 
-[note You can set `PHOENIX_ARG_LIMIT`, the predefined maximum
-placeholder index. By default, `PHOENIX_ARG_LIMIT` is set to `PHOENIX_LIMIT`
+[note You can set `BOOST_PHOENIX_ARG_LIMIT`, the predefined maximum
+placeholder index. By default, `BOOST_PHOENIX_ARG_LIMIT` is set to `BOOST_PHOENIX_LIMIT`
 (See [link phoenix.reference.concepts.actor Actor]).]
 
 You see the use of make_argument this is a convenience class wrapping the `compose` class:

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/object.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/object.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/object.qbk 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -9,9 +9,9 @@
 
 [def __limit_note__
 The maximum number of actual parameters is limited by the
-preprocessor constant PHOENIX_COMPOSITE_LIMIT. Note though, that this limit
-should not be greater than PHOENIX_LIMIT. By default, `PHOENIX_COMPOSITE_LIMIT`
-is set to `PHOENIX_LIMIT` (See [link phoenix.reference.concepts.actor Actor]).
+preprocessor constant BOOST_PHOENIX_COMPOSITE_LIMIT. Note though, that this limit
+should not be greater than BOOST_PHOENIX_LIMIT. By default, `BOOST_PHOENIX_COMPOSITE_LIMIT`
+is set to `BOOST_PHOENIX_LIMIT` (See [link phoenix.reference.concepts.actor Actor]).
 ]
 
 [section Object]

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/scope.qbk
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/scope.qbk (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/doc/reference/scope.qbk 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -60,13 +60,13 @@
     ]
 
 `let` allows 1..N local variable declarations (where N ==
-`PHOENIX_LOCAL_LIMIT`). Each declaration follows the form:
+`BOOST_PHOENIX_LOCAL_LIMIT`). Each declaration follows the form:
 
     local-id = lambda-expression
 
-[note You can set `PHOENIX_LOCAL_LIMIT`, the predefined maximum local
-variable declarations in a let expression. By default, `PHOENIX_LOCAL_LIMIT` is
-set to `PHOENIX_LIMIT`.]
+[note You can set `BOOST_PHOENIX_LOCAL_LIMIT`, the predefined maximum local
+variable declarations in a let expression. By default, `BOOST_PHOENIX_LOCAL_LIMIT` is
+set to `BOOST_PHOENIX_LIMIT`.]
 
 Example:
 
@@ -203,7 +203,7 @@
     ]
 
 Like `let`, local variables may be declared, allowing 1..N local variable
-declarations (where N == `PHOENIX_LOCAL_LIMIT`):
+declarations (where N == `BOOST_PHOENIX_LOCAL_LIMIT`):
 
     lambda(local-declarations)
     [

Modified: sandbox/SOC/2010/phoenix3/libs/phoenix/preprocess/wave.cfg
==============================================================================
--- sandbox/SOC/2010/phoenix3/libs/phoenix/preprocess/wave.cfg (original)
+++ sandbox/SOC/2010/phoenix3/libs/phoenix/preprocess/wave.cfg 2011-02-21 06:53:02 EST (Mon, 21 Feb 2011)
@@ -1,7 +1,8 @@
--DPHOENIX_DONT_USE_PREPROCESSED_FILES
--DPHOENIX_CREATE_PREPROCESSED_FILES
--S/home/cip/ce/sithhell/programming/boost
--S/usr/lib/gcc/i486-linux-gnu/4.3.2/include
+-DBOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
+-DBOOST_PHOENIX_CREATE_PREPROCESSED_FILES
+-S/home/thomas/programming/boost
+-S/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/include
+-S/usr/include/c++/4.5.2
 -S/usr/include/c++/4.3.2
 -S/usr/include/c++/4.3.2/i486-linux-gnu
 -S/usr/include


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