Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r80356 - in branches/release: . boost boost/proto boost/proto/detail boost/proto/detail/preprocessed boost/proto/functional boost/proto/functional/range boost/proto/functional/std boost/proto/transform boost/proto/transform/detail boost/proto/transform/detail/preprocessed libs libs/proto/doc libs/proto/doc/reference/functional libs/proto/doc/reference/functional/range libs/proto/doc/reference/functional/std libs/proto/example libs/proto/test
From: eric_at_[hidden]
Date: 2012-09-01 19:52:45


Author: eric_niebler
Date: 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
New Revision: 80356
URL: http://svn.boost.org/trac/boost/changeset/80356

Log:
merge misc proto changes from trunk: [80247], [80262], [80265], [80266], [80275], [80273], [80274]
Added:
   branches/release/boost/proto/functional/range/
      - copied from r80266, /trunk/boost/proto/functional/range/
   branches/release/boost/proto/functional/range.hpp
      - copied unchanged from r80266, /trunk/boost/proto/functional/range.hpp
   branches/release/boost/proto/functional/std/iterator.hpp
      - copied unchanged from r80266, /trunk/boost/proto/functional/std/iterator.hpp
   branches/release/libs/proto/doc/reference/functional/range/
      - copied from r80266, /trunk/libs/proto/doc/reference/functional/range/
   branches/release/libs/proto/doc/reference/functional/range.xml
      - copied unchanged from r80266, /trunk/libs/proto/doc/reference/functional/range.xml
   branches/release/libs/proto/doc/reference/functional/std/iterator.xml
      - copied unchanged from r80266, /trunk/libs/proto/doc/reference/functional/std/iterator.xml
   branches/release/libs/proto/test/cpp-next_bug.cpp
      - copied, changed from r80262, /trunk/libs/proto/test/cpp-next_bug.cpp
   branches/release/libs/proto/test/mpl.cpp
      - copied unchanged from r80273, /trunk/libs/proto/test/mpl.cpp
Properties modified:
   branches/release/ (props changed)
   branches/release/boost/ (props changed)
   branches/release/libs/ (props changed)
Text files modified:
   branches/release/boost/proto/detail/basic_expr.hpp | 2
   branches/release/boost/proto/detail/expr.hpp | 2
   branches/release/boost/proto/detail/preprocessed/basic_expr.hpp | 22 +++---
   branches/release/boost/proto/detail/preprocessed/expr.hpp | 22 +++---
   branches/release/boost/proto/detail/preprocessed/expr_variadic.hpp | 22 +++---
   branches/release/boost/proto/extends.hpp | 4
   branches/release/boost/proto/functional.hpp | 1
   branches/release/boost/proto/functional/range/begin.hpp | 2
   branches/release/boost/proto/functional/range/end.hpp | 2
   branches/release/boost/proto/functional/range/rbegin.hpp | 2
   branches/release/boost/proto/functional/range/rend.hpp | 8 +-
   branches/release/boost/proto/functional/std.hpp | 1
   branches/release/boost/proto/fusion.hpp | 141 +++++++++++++++++++++++++++------------
   branches/release/boost/proto/proto_fwd.hpp | 6
   branches/release/boost/proto/transform/detail/pass_through_impl.hpp | 2
   branches/release/boost/proto/transform/detail/preprocessed/pass_through_impl.hpp | 20 ++--
   branches/release/boost/proto/transform/impl.hpp | 44 ++++++++++++
   branches/release/libs/proto/doc/reference.xml | 57 ++++++++++++++++
   branches/release/libs/proto/example/virtual_member.cpp | 42 +++++-----
   branches/release/libs/proto/test/Jamfile.v2 | 2
   branches/release/libs/proto/test/cpp-next_bug.cpp | 2
   21 files changed, 283 insertions(+), 123 deletions(-)

Modified: branches/release/boost/proto/detail/basic_expr.hpp
==============================================================================
--- branches/release/boost/proto/detail/basic_expr.hpp (original)
+++ branches/release/boost/proto/detail/basic_expr.hpp 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -100,7 +100,7 @@
         typedef basic_expr proto_grammar;
         typedef basic_default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef basic_expr proto_derived_expr;
         typedef void proto_is_expr_; /**< INTERNAL ONLY */
 

Modified: branches/release/boost/proto/detail/expr.hpp
==============================================================================
--- branches/release/boost/proto/detail/expr.hpp (original)
+++ branches/release/boost/proto/detail/expr.hpp 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -131,7 +131,7 @@
         typedef basic_expr<Tag, proto_args, BOOST_PP_ITERATION() > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_; /**< INTERNAL ONLY */
 

Modified: branches/release/boost/proto/detail/preprocessed/basic_expr.hpp
==============================================================================
--- branches/release/boost/proto/detail/preprocessed/basic_expr.hpp (original)
+++ branches/release/boost/proto/detail/preprocessed/basic_expr.hpp 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -44,7 +44,7 @@
         typedef basic_expr proto_grammar;
         typedef basic_default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef basic_expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0;
@@ -122,7 +122,7 @@
         typedef basic_expr proto_grammar;
         typedef basic_default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef basic_expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0;
@@ -206,7 +206,7 @@
         typedef basic_expr proto_grammar;
         typedef basic_default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef basic_expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1;
@@ -277,7 +277,7 @@
         typedef basic_expr proto_grammar;
         typedef basic_default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef basic_expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2;
@@ -348,7 +348,7 @@
         typedef basic_expr proto_grammar;
         typedef basic_default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef basic_expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3;
@@ -419,7 +419,7 @@
         typedef basic_expr proto_grammar;
         typedef basic_default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef basic_expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4;
@@ -490,7 +490,7 @@
         typedef basic_expr proto_grammar;
         typedef basic_default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef basic_expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5;
@@ -561,7 +561,7 @@
         typedef basic_expr proto_grammar;
         typedef basic_default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef basic_expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6;
@@ -632,7 +632,7 @@
         typedef basic_expr proto_grammar;
         typedef basic_default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef basic_expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6; typedef Arg7 proto_child7; proto_child7 child7;
@@ -703,7 +703,7 @@
         typedef basic_expr proto_grammar;
         typedef basic_default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef basic_expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6; typedef Arg7 proto_child7; proto_child7 child7; typedef Arg8 proto_child8; proto_child8 child8;
@@ -774,7 +774,7 @@
         typedef basic_expr proto_grammar;
         typedef basic_default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef basic_expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6; typedef Arg7 proto_child7; proto_child7 child7; typedef Arg8 proto_child8; proto_child8 child8; typedef Arg9 proto_child9; proto_child9 child9;

Modified: branches/release/boost/proto/detail/preprocessed/expr.hpp
==============================================================================
--- branches/release/boost/proto/detail/preprocessed/expr.hpp (original)
+++ branches/release/boost/proto/detail/preprocessed/expr.hpp 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -44,7 +44,7 @@
         typedef basic_expr<Tag, proto_args, 0 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0;
@@ -585,7 +585,7 @@
         typedef basic_expr<Tag, proto_args, 1 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0;
@@ -916,7 +916,7 @@
         typedef basic_expr<Tag, proto_args, 2 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1;
@@ -1234,7 +1234,7 @@
         typedef basic_expr<Tag, proto_args, 3 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2;
@@ -1552,7 +1552,7 @@
         typedef basic_expr<Tag, proto_args, 4 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3;
@@ -1870,7 +1870,7 @@
         typedef basic_expr<Tag, proto_args, 5 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4;
@@ -2188,7 +2188,7 @@
         typedef basic_expr<Tag, proto_args, 6 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5;
@@ -2506,7 +2506,7 @@
         typedef basic_expr<Tag, proto_args, 7 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6;
@@ -2824,7 +2824,7 @@
         typedef basic_expr<Tag, proto_args, 8 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6; typedef Arg7 proto_child7; proto_child7 child7;
@@ -3142,7 +3142,7 @@
         typedef basic_expr<Tag, proto_args, 9 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6; typedef Arg7 proto_child7; proto_child7 child7; typedef Arg8 proto_child8; proto_child8 child8;
@@ -3460,7 +3460,7 @@
         typedef basic_expr<Tag, proto_args, 10 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6; typedef Arg7 proto_child7; proto_child7 child7; typedef Arg8 proto_child8; proto_child8 child8; typedef Arg9 proto_child9; proto_child9 child9;

Modified: branches/release/boost/proto/detail/preprocessed/expr_variadic.hpp
==============================================================================
--- branches/release/boost/proto/detail/preprocessed/expr_variadic.hpp (original)
+++ branches/release/boost/proto/detail/preprocessed/expr_variadic.hpp 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -44,7 +44,7 @@
         typedef basic_expr<Tag, proto_args, 0 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0;
@@ -330,7 +330,7 @@
         typedef basic_expr<Tag, proto_args, 1 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0;
@@ -533,7 +533,7 @@
         typedef basic_expr<Tag, proto_args, 2 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1;
@@ -723,7 +723,7 @@
         typedef basic_expr<Tag, proto_args, 3 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2;
@@ -913,7 +913,7 @@
         typedef basic_expr<Tag, proto_args, 4 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3;
@@ -1103,7 +1103,7 @@
         typedef basic_expr<Tag, proto_args, 5 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4;
@@ -1293,7 +1293,7 @@
         typedef basic_expr<Tag, proto_args, 6 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5;
@@ -1483,7 +1483,7 @@
         typedef basic_expr<Tag, proto_args, 7 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6;
@@ -1673,7 +1673,7 @@
         typedef basic_expr<Tag, proto_args, 8 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6; typedef Arg7 proto_child7; proto_child7 child7;
@@ -1863,7 +1863,7 @@
         typedef basic_expr<Tag, proto_args, 9 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6; typedef Arg7 proto_child7; proto_child7 child7; typedef Arg8 proto_child8; proto_child8 child8;
@@ -2053,7 +2053,7 @@
         typedef basic_expr<Tag, proto_args, 10 > proto_grammar;
         typedef default_domain proto_domain;
         typedef default_generator proto_generator;
- typedef proto::tag::proto_expr fusion_tag;
+ typedef proto::tag::proto_expr<Tag, proto_domain> fusion_tag;
         typedef expr proto_derived_expr;
         typedef void proto_is_expr_;
         typedef Arg0 proto_child0; proto_child0 child0; typedef Arg1 proto_child1; proto_child1 child1; typedef Arg2 proto_child2; proto_child2 child2; typedef Arg3 proto_child3; proto_child3 child3; typedef Arg4 proto_child4; proto_child4 child4; typedef Arg5 proto_child5; proto_child5 child5; typedef Arg6 proto_child6; proto_child6 child6; typedef Arg7 proto_child7; proto_child7 child7; typedef Arg8 proto_child8; proto_child8 child8; typedef Arg9 proto_child9; proto_child9 child9;

Modified: branches/release/boost/proto/extends.hpp
==============================================================================
--- branches/release/boost/proto/extends.hpp (original)
+++ branches/release/boost/proto/extends.hpp 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -172,7 +172,7 @@
         typedef typename proto_base_expr::address_of_hack_type_ proto_address_of_hack_type_; \
         typedef void proto_is_expr_; /**< INTERNAL ONLY */ \
         static const long proto_arity_c = proto_base_expr::proto_arity_c; \
- typedef boost::proto::tag::proto_expr fusion_tag; \
+ typedef boost::proto::tag::proto_expr<proto_tag, proto_domain> fusion_tag; \
         BOOST_PP_REPEAT(BOOST_PROTO_MAX_ARITY, BOOST_PROTO_EXTENDS_CHILD, ~) \
                                                                                                     \
         BOOST_PROTO_DISABLE_MSVC_C4714 BOOST_FORCEINLINE \
@@ -571,7 +571,7 @@
             typedef detail::not_a_valid_type proto_address_of_hack_type_;
             typedef void proto_is_expr_; /**< INTERNAL ONLY */
             static const long proto_arity_c = 2;
- typedef boost::proto::tag::proto_expr fusion_tag;
+ typedef boost::proto::tag::proto_expr<proto_tag, Domain> fusion_tag;
             typedef This &proto_child0;
             typedef expr<tag::terminal, term<Fun> > const &proto_child1;
             typedef expr<proto_tag, proto_args, proto_arity_c> proto_base_expr;

Modified: branches/release/boost/proto/functional.hpp
==============================================================================
--- branches/release/boost/proto/functional.hpp (original)
+++ branches/release/boost/proto/functional.hpp 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -11,5 +11,6 @@
 
 #include <boost/proto/functional/std.hpp>
 #include <boost/proto/functional/fusion.hpp>
+#include <boost/proto/functional/range.hpp>
 
 #endif

Modified: branches/release/boost/proto/functional/range/begin.hpp
==============================================================================
--- /trunk/boost/proto/functional/range/begin.hpp (original)
+++ branches/release/boost/proto/functional/range/begin.hpp 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -25,7 +25,7 @@
 
         template<typename This, typename Rng>
         struct result<This(Rng)>
- : boost::range_iterator<Rng>
+ : boost::range_iterator<Rng const>
         {};
 
         template<typename This, typename Rng>

Modified: branches/release/boost/proto/functional/range/end.hpp
==============================================================================
--- /trunk/boost/proto/functional/range/end.hpp (original)
+++ branches/release/boost/proto/functional/range/end.hpp 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -25,7 +25,7 @@
 
         template<typename This, typename Rng>
         struct result<This(Rng)>
- : boost::range_iterator<Rng>
+ : boost::range_iterator<Rng const>
         {};
 
         template<typename This, typename Rng>

Modified: branches/release/boost/proto/functional/range/rbegin.hpp
==============================================================================
--- /trunk/boost/proto/functional/range/rbegin.hpp (original)
+++ branches/release/boost/proto/functional/range/rbegin.hpp 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -25,7 +25,7 @@
 
         template<typename This, typename Rng>
         struct result<This(Rng)>
- : boost::range_reverse_iterator<Rng>
+ : boost::range_reverse_iterator<Rng const>
         {};
 
         template<typename This, typename Rng>

Modified: branches/release/boost/proto/functional/range/rend.hpp
==============================================================================
--- /trunk/boost/proto/functional/range/rend.hpp (original)
+++ branches/release/boost/proto/functional/range/rend.hpp 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -25,22 +25,22 @@
 
         template<typename This, typename Rng>
         struct result<This(Rng)>
- : boost::range_iterator<Rng>
+ : boost::range_reverse_iterator<Rng const>
         {};
 
         template<typename This, typename Rng>
         struct result<This(Rng &)>
- : boost::range_iterator<Rng>
+ : boost::range_reverse_iterator<Rng>
         {};
 
         template<typename Rng>
- typename boost::range_iterator<Rng>::type operator()(Rng &rng) const
+ typename boost::range_reverse_iterator<Rng>::type operator()(Rng &rng) const
         {
             return boost::rend(rng);
         }
 
         template<typename Rng>
- typename boost::range_iterator<Rng const>::type operator()(Rng const &rng) const
+ typename boost::range_reverse_iterator<Rng const>::type operator()(Rng const &rng) const
         {
             return boost::rend(rng);
         }

Modified: branches/release/boost/proto/functional/std.hpp
==============================================================================
--- branches/release/boost/proto/functional/std.hpp (original)
+++ branches/release/boost/proto/functional/std.hpp 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -10,5 +10,6 @@
 #define BOOST_PROTO_FUNCTIONAL_STD_HPP_EAN_11_27_2010
 
 #include <boost/proto/functional/std/utility.hpp>
+#include <boost/proto/functional/std/iterator.hpp>
 
 #endif

Modified: branches/release/boost/proto/fusion.hpp
==============================================================================
--- branches/release/boost/proto/fusion.hpp (original)
+++ branches/release/boost/proto/fusion.hpp 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -27,6 +27,7 @@
 #include <boost/proto/proto_fwd.hpp>
 #include <boost/proto/traits.hpp>
 #include <boost/proto/eval.hpp>
+#include <boost/proto/make_expr.hpp>
 
 #ifdef BOOST_MSVC
 #pragma warning(push)
@@ -46,7 +47,12 @@
             typedef Expr expr_type;
             static const long index = Pos;
             typedef fusion::random_access_traversal_tag category;
- typedef tag::proto_expr_iterator fusion_tag;
+ typedef
+ tag::proto_expr_iterator<
+ typename Expr::proto_tag
+ , typename Expr::proto_domain
+ >
+ fusion_tag;
 
             explicit expr_iterator(Expr &e)
               : expr(e)
@@ -60,7 +66,12 @@
         {
             typedef Expr expr_type;
             typedef fusion::forward_traversal_tag category;
- typedef tag::proto_flat_view fusion_tag;
+ typedef
+ tag::proto_flat_view<
+ typename Expr::proto_tag
+ , typename Expr::proto_domain
+ >
+ fusion_tag;
 
             explicit flat_view(Expr &e)
               : expr_(e)
@@ -250,8 +261,8 @@
         template<typename Tag>
         struct is_sequence_impl;
 
- template<>
- struct is_sequence_impl<proto::tag::proto_flat_view>
+ template<typename Tag, typename Domain>
+ struct is_sequence_impl<proto::tag::proto_flat_view<Tag, Domain> >
         {
             template<typename Sequence>
             struct apply
@@ -259,8 +270,8 @@
             {};
         };
 
- template<>
- struct is_sequence_impl<proto::tag::proto_expr>
+ template<typename Tag, typename Domain>
+ struct is_sequence_impl<proto::tag::proto_expr<Tag, Domain> >
         {
             template<typename Sequence>
             struct apply
@@ -271,8 +282,8 @@
         template<typename Tag>
         struct is_view_impl;
 
- template<>
- struct is_view_impl<proto::tag::proto_flat_view>
+ template<typename Tag, typename Domain>
+ struct is_view_impl<proto::tag::proto_flat_view<Tag, Domain> >
         {
             template<typename Sequence>
             struct apply
@@ -280,8 +291,8 @@
             {};
         };
 
- template<>
- struct is_view_impl<proto::tag::proto_expr>
+ template<typename Tag, typename Domain>
+ struct is_view_impl<proto::tag::proto_expr<Tag, Domain> >
         {
             template<typename Sequence>
             struct apply
@@ -292,8 +303,8 @@
         template<typename Tag>
         struct value_of_impl;
 
- template<>
- struct value_of_impl<proto::tag::proto_expr_iterator>
+ template<typename Tag, typename Domain>
+ struct value_of_impl<proto::tag::proto_expr_iterator<Tag, Domain> >
         {
             template<
                 typename Iterator
@@ -323,8 +334,8 @@
         template<typename Tag>
         struct deref_impl;
 
- template<>
- struct deref_impl<proto::tag::proto_expr_iterator>
+ template<typename Tag, typename Domain>
+ struct deref_impl<proto::tag::proto_expr_iterator<Tag, Domain> >
         {
             template<
                 typename Iterator
@@ -364,8 +375,8 @@
         template<typename Tag>
         struct advance_impl;
 
- template<>
- struct advance_impl<proto::tag::proto_expr_iterator>
+ template<typename Tag, typename Domain>
+ struct advance_impl<proto::tag::proto_expr_iterator<Tag, Domain> >
         {
             template<typename Iterator, typename N>
             struct apply
@@ -387,8 +398,8 @@
         template<typename Tag>
         struct distance_impl;
 
- template<>
- struct distance_impl<proto::tag::proto_expr_iterator>
+ template<typename Tag, typename Domain>
+ struct distance_impl<proto::tag::proto_expr_iterator<Tag, Domain> >
         {
             template<typename IteratorFrom, typename IteratorTo>
             struct apply
@@ -399,32 +410,32 @@
         template<typename Tag>
         struct next_impl;
 
- template<>
- struct next_impl<proto::tag::proto_expr_iterator>
+ template<typename Tag, typename Domain>
+ struct next_impl<proto::tag::proto_expr_iterator<Tag, Domain> >
         {
             template<typename Iterator>
             struct apply
- : advance_impl<proto::tag::proto_expr_iterator>::template apply<Iterator, mpl::long_<1> >
+ : advance_impl<proto::tag::proto_expr_iterator<Tag, Domain> >::template apply<Iterator, mpl::long_<1> >
             {};
         };
 
         template<typename Tag>
         struct prior_impl;
 
- template<>
- struct prior_impl<proto::tag::proto_expr_iterator>
+ template<typename Tag, typename Domain>
+ struct prior_impl<proto::tag::proto_expr_iterator<Tag, Domain> >
         {
             template<typename Iterator>
             struct apply
- : advance_impl<proto::tag::proto_expr_iterator>::template apply<Iterator, mpl::long_<-1> >
+ : advance_impl<proto::tag::proto_expr_iterator<Tag, Domain> >::template apply<Iterator, mpl::long_<-1> >
             {};
         };
 
         template<typename Tag>
         struct category_of_impl;
 
- template<>
- struct category_of_impl<proto::tag::proto_expr>
+ template<typename Tag, typename Domain>
+ struct category_of_impl<proto::tag::proto_expr<Tag, Domain> >
         {
             template<typename Sequence>
             struct apply
@@ -436,8 +447,8 @@
         template<typename Tag>
         struct size_impl;
 
- template<>
- struct size_impl<proto::tag::proto_expr>
+ template<typename Tag, typename Domain>
+ struct size_impl<proto::tag::proto_expr<Tag, Domain> >
         {
             template<typename Sequence>
             struct apply
@@ -448,8 +459,8 @@
         template<typename Tag>
         struct begin_impl;
 
- template<>
- struct begin_impl<proto::tag::proto_expr>
+ template<typename Tag, typename Domain>
+ struct begin_impl<proto::tag::proto_expr<Tag, Domain> >
         {
             template<typename Sequence>
             struct apply
@@ -466,8 +477,8 @@
         template<typename Tag>
         struct end_impl;
 
- template<>
- struct end_impl<proto::tag::proto_expr>
+ template<typename Tag, typename Domain>
+ struct end_impl<proto::tag::proto_expr<Tag, Domain> >
         {
             template<typename Sequence>
             struct apply
@@ -489,8 +500,8 @@
         template<typename Tag>
         struct value_at_impl;
 
- template<>
- struct value_at_impl<proto::tag::proto_expr>
+ template<typename Tag, typename Domain>
+ struct value_at_impl<proto::tag::proto_expr<Tag, Domain> >
         {
             template<
                 typename Sequence
@@ -521,8 +532,8 @@
         template<typename Tag>
         struct at_impl;
 
- template<>
- struct at_impl<proto::tag::proto_expr>
+ template<typename Tag, typename Domain>
+ struct at_impl<proto::tag::proto_expr<Tag, Domain> >
         {
             template<
                 typename Sequence
@@ -561,10 +572,55 @@
         };
 
         template<typename Tag>
+ struct convert_impl;
+
+ template<typename Tag, typename Domain>
+ struct convert_impl<proto::tag::proto_expr<Tag, Domain> >
+ {
+ template<typename Sequence>
+ struct apply
+ {
+ typedef
+ typename proto::result_of::unpack_expr<
+ Tag
+ , Domain
+ , Sequence
+ >::type
+ type;
+
+ static type call(Sequence& seq)
+ {
+ return proto::unpack_expr<Tag, Domain>(seq);
+ }
+ };
+ };
+
+ template<typename Tag, typename Domain>
+ struct convert_impl<proto::tag::proto_flat_view<Tag, Domain> >
+ {
+ template<typename Sequence>
+ struct apply
+ {
+ typedef
+ typename proto::result_of::unpack_expr<
+ Tag
+ , Domain
+ , Sequence
+ >::type
+ type;
+
+ static type call(Sequence& seq)
+ {
+ return proto::unpack_expr<Tag, Domain>(seq);
+ }
+ };
+ };
+
+ template<typename Tag>
         struct is_segmented_impl;
 
- template<>
- struct is_segmented_impl<proto::tag::proto_flat_view>
+ template<typename Tag, typename Domain>
+ struct is_segmented_impl<proto::tag::proto_flat_view<Tag, Domain> >
         {
             template<typename Iterator>
             struct apply
@@ -575,8 +631,8 @@
         template<typename Tag>
         struct segments_impl;
 
- template<>
- struct segments_impl<proto::tag::proto_flat_view>
+ template<typename Tag, typename Domain>
+ struct segments_impl<proto::tag::proto_flat_view<Tag, Domain> >
         {
             template<typename Sequence>
             struct apply
@@ -597,8 +653,8 @@
             };
         };
 
- template<>
- struct category_of_impl<proto::tag::proto_flat_view>
+ template<typename Tag, typename Domain>
+ struct category_of_impl<proto::tag::proto_flat_view<Tag, Domain> >
         {
             template<typename Sequence>
             struct apply
@@ -606,7 +662,6 @@
                 typedef forward_traversal_tag type;
             };
         };
-
     }
 
     namespace traits

Modified: branches/release/boost/proto/proto_fwd.hpp
==============================================================================
--- branches/release/boost/proto/proto_fwd.hpp (original)
+++ branches/release/boost/proto/proto_fwd.hpp 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -291,9 +291,9 @@
             struct function;
 
             // Fusion tags
- struct proto_expr;
- struct proto_expr_iterator;
- struct proto_flat_view;
+ template<typename Tag, typename Domain> struct proto_expr;
+ template<typename Tag, typename Domain> struct proto_expr_iterator;
+ template<typename Tag, typename Domain> struct proto_flat_view;
         }
     }
 

Modified: branches/release/boost/proto/transform/detail/pass_through_impl.hpp
==============================================================================
--- branches/release/boost/proto/transform/detail/pass_through_impl.hpp (original)
+++ branches/release/boost/proto/transform/detail/pass_through_impl.hpp 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -71,7 +71,7 @@
         expr_type;
 
         typedef typename unref_expr::proto_generator proto_generator;
- typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type;
+ typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type;
 
         BOOST_FORCEINLINE
         result_type const operator ()(

Modified: branches/release/boost/proto/transform/detail/preprocessed/pass_through_impl.hpp
==============================================================================
--- branches/release/boost/proto/transform/detail/preprocessed/pass_through_impl.hpp (original)
+++ branches/release/boost/proto/transform/detail/preprocessed/pass_through_impl.hpp 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -22,7 +22,7 @@
>::type
         expr_type;
         typedef typename unref_expr::proto_generator proto_generator;
- typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type;
+ typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type;
         BOOST_FORCEINLINE
         result_type const operator ()(
             typename pass_through_impl::expr_param e
@@ -55,7 +55,7 @@
>::type
         expr_type;
         typedef typename unref_expr::proto_generator proto_generator;
- typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type;
+ typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type;
         BOOST_FORCEINLINE
         result_type const operator ()(
             typename pass_through_impl::expr_param e
@@ -88,7 +88,7 @@
>::type
         expr_type;
         typedef typename unref_expr::proto_generator proto_generator;
- typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type;
+ typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type;
         BOOST_FORCEINLINE
         result_type const operator ()(
             typename pass_through_impl::expr_param e
@@ -121,7 +121,7 @@
>::type
         expr_type;
         typedef typename unref_expr::proto_generator proto_generator;
- typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type;
+ typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type;
         BOOST_FORCEINLINE
         result_type const operator ()(
             typename pass_through_impl::expr_param e
@@ -154,7 +154,7 @@
>::type
         expr_type;
         typedef typename unref_expr::proto_generator proto_generator;
- typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type;
+ typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type;
         BOOST_FORCEINLINE
         result_type const operator ()(
             typename pass_through_impl::expr_param e
@@ -187,7 +187,7 @@
>::type
         expr_type;
         typedef typename unref_expr::proto_generator proto_generator;
- typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type;
+ typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type;
         BOOST_FORCEINLINE
         result_type const operator ()(
             typename pass_through_impl::expr_param e
@@ -220,7 +220,7 @@
>::type
         expr_type;
         typedef typename unref_expr::proto_generator proto_generator;
- typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type;
+ typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type;
         BOOST_FORCEINLINE
         result_type const operator ()(
             typename pass_through_impl::expr_param e
@@ -253,7 +253,7 @@
>::type
         expr_type;
         typedef typename unref_expr::proto_generator proto_generator;
- typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type;
+ typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type;
         BOOST_FORCEINLINE
         result_type const operator ()(
             typename pass_through_impl::expr_param e
@@ -286,7 +286,7 @@
>::type
         expr_type;
         typedef typename unref_expr::proto_generator proto_generator;
- typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type;
+ typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type;
         BOOST_FORCEINLINE
         result_type const operator ()(
             typename pass_through_impl::expr_param e
@@ -319,7 +319,7 @@
>::type
         expr_type;
         typedef typename unref_expr::proto_generator proto_generator;
- typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type const result_type;
+ typedef typename BOOST_PROTO_RESULT_OF<proto_generator(expr_type)>::type result_type;
         BOOST_FORCEINLINE
         result_type const operator ()(
             typename pass_through_impl::expr_param e

Modified: branches/release/boost/proto/transform/impl.hpp
==============================================================================
--- branches/release/boost/proto/transform/impl.hpp (original)
+++ branches/release/boost/proto/transform/impl.hpp 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -100,6 +100,16 @@
         return boost::proto::detail::apply_transform<transform_type(Expr &)>()(e, s, d); \
     } \
                                                                                                                 \
+ template<typename Expr> \
+ BOOST_FORCEINLINE \
+ typename boost::proto::detail::apply_transform<transform_type(Expr const &)>::result_type \
+ operator ()(Expr const &e) const \
+ { \
+ boost::proto::empty_state s = 0; \
+ boost::proto::empty_env d; \
+ return boost::proto::detail::apply_transform<transform_type(Expr const &)>()(e, s, d); \
+ } \
+ \
     template<typename Expr, typename State> \
     BOOST_FORCEINLINE \
     typename boost::proto::detail::apply_transform<transform_type(Expr &, State &)>::result_type \
@@ -111,6 +121,15 @@
                                                                                                                 \
     template<typename Expr, typename State> \
     BOOST_FORCEINLINE \
+ typename boost::proto::detail::apply_transform<transform_type(Expr const &, State &)>::result_type \
+ operator ()(Expr const &e, State &s) const \
+ { \
+ boost::proto::empty_env d; \
+ return boost::proto::detail::apply_transform<transform_type(Expr const &, State &)>()(e, s, d); \
+ } \
+ \
+ template<typename Expr, typename State> \
+ BOOST_FORCEINLINE \
     typename boost::proto::detail::apply_transform<transform_type(Expr &, State const &)>::result_type \
     operator ()(Expr &e, State const &s) const \
     { \
@@ -118,6 +137,15 @@
         return boost::proto::detail::apply_transform<transform_type(Expr &, State const &)>()(e, s, d); \
     } \
                                                                                                                 \
+ template<typename Expr, typename State> \
+ BOOST_FORCEINLINE \
+ typename boost::proto::detail::apply_transform<transform_type(Expr const &, State const &)>::result_type \
+ operator ()(Expr const &e, State const &s) const \
+ { \
+ boost::proto::empty_env d; \
+ return boost::proto::detail::apply_transform<transform_type(Expr const &, State const &)>()(e, s, d); \
+ } \
+ \
     template<typename Expr, typename State, typename Data> \
     BOOST_FORCEINLINE \
     typename boost::proto::detail::apply_transform<transform_type(Expr &, State &, Data &)>::result_type \
@@ -128,11 +156,27 @@
                                                                                                                 \
     template<typename Expr, typename State, typename Data> \
     BOOST_FORCEINLINE \
+ typename boost::proto::detail::apply_transform<transform_type(Expr const &, State &, Data &)>::result_type \
+ operator ()(Expr const &e, State &s, Data &d) const \
+ { \
+ return boost::proto::detail::apply_transform<transform_type(Expr const &, State &, Data &)>()(e, s, d); \
+ } \
+ \
+ template<typename Expr, typename State, typename Data> \
+ BOOST_FORCEINLINE \
     typename boost::proto::detail::apply_transform<transform_type(Expr &, State const &, Data &)>::result_type \
     operator ()(Expr &e, State const &s, Data &d) const \
     { \
         return boost::proto::detail::apply_transform<transform_type(Expr &, State const &, Data &)>()(e, s, d); \
     } \
+ \
+ template<typename Expr, typename State, typename Data> \
+ BOOST_FORCEINLINE \
+ typename boost::proto::detail::apply_transform<transform_type(Expr const &, State const &, Data &)>::result_type \
+ operator ()(Expr const &e, State const &s, Data &d) const \
+ { \
+ return boost::proto::detail::apply_transform<transform_type(Expr const &, State const &, Data &)>()(e, s, d); \
+ } \
     /**/
 
 #else

Modified: branches/release/libs/proto/doc/reference.xml
==============================================================================
--- branches/release/libs/proto/doc/reference.xml (original)
+++ branches/release/libs/proto/doc/reference.xml 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -324,6 +324,11 @@
       </listitem>
       <listitem>
         <computeroutput>
+ <classname alt="boost::proto::functional::advance">proto::functional::advance</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
           <classname alt="boost::proto::functional::as_child">proto::functional::as_child</classname>
         </computeroutput>
       </listitem>
@@ -344,6 +349,11 @@
       </listitem>
       <listitem>
         <computeroutput>
+ <classname alt="boost::proto::functional::begin">proto::functional::begin</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
           <classname alt="boost::proto::functional::child">proto::functional::child</classname>
         </computeroutput>
       </listitem>
@@ -364,6 +374,21 @@
       </listitem>
       <listitem>
         <computeroutput>
+ <classname alt="boost::proto::functional::distance">proto::functional::distance</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
+ <classname alt="boost::proto::functional::empty">proto::functional::empty</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
+ <classname alt="boost::proto::functional::end">proto::functional::end</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
           <classname alt="boost::proto::functional::env_var">proto::functional::env_var</classname>
         </computeroutput>
       </listitem>
@@ -404,6 +429,11 @@
       </listitem>
       <listitem>
         <computeroutput>
+ <classname alt="boost::proto::functional::next">proto::functional::next</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
           <classname alt="boost::proto::functional::pop_back">proto::functional::pop_back</classname>
         </computeroutput>
       </listitem>
@@ -414,6 +444,11 @@
       </listitem>
       <listitem>
         <computeroutput>
+ <classname alt="boost::proto::functional::prior">proto::functional::prior</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
           <classname alt="boost::proto::functional::push_back">proto::functional::push_back</classname>
         </computeroutput>
       </listitem>
@@ -424,6 +459,16 @@
       </listitem>
       <listitem>
         <computeroutput>
+ <classname alt="boost::proto::functional::rbegin">proto::functional::rbegin</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
+ <classname alt="boost::proto::functional::rend">proto::functional::rend</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
           <classname alt="boost::proto::functional::reverse">proto::functional::reverse</classname>
         </computeroutput>
       </listitem>
@@ -439,6 +484,11 @@
       </listitem>
       <listitem>
         <computeroutput>
+ <classname alt="boost::proto::functional::size">proto::functional::size</classname>
+ </computeroutput>
+ </listitem>
+ <listitem>
+ <computeroutput>
           <classname alt="boost::proto::functional::unpack_expr">proto::functional::unpack_expr</classname>
         </computeroutput>
       </listitem>
@@ -1243,7 +1293,14 @@
   <xi:include href="reference/functional/fusion/push_back.xml"/>
   <xi:include href="reference/functional/fusion/push_front.xml"/>
   <xi:include href="reference/functional/fusion/reverse.xml"/>
+ <xi:include href="reference/functional/range/begin.xml"/>
+ <xi:include href="reference/functional/range/empty.xml"/>
+ <xi:include href="reference/functional/range/end.xml"/>
+ <xi:include href="reference/functional/range/rbegin.xml"/>
+ <xi:include href="reference/functional/range/rend.xml"/>
+ <xi:include href="reference/functional/range/size.xml"/>
   <xi:include href="reference/functional/std.xml"/>
+ <xi:include href="reference/functional/std/iterator.xml"/>
   <xi:include href="reference/functional/std/utility.xml"/>
   <xi:include href="reference/fusion.xml"/>
   <xi:include href="reference/generate.xml"/>

Modified: branches/release/libs/proto/example/virtual_member.cpp
==============================================================================
--- branches/release/libs/proto/example/virtual_member.cpp (original)
+++ branches/release/libs/proto/example/virtual_member.cpp 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -87,27 +87,7 @@
     }
 
     // Forward declaration for the mini-lambda grammar
- struct grammar;
-
- // A callable PolymorphicFunctionObject that evaluates
- // if/then/else expressions.
- struct eval_if_else : proto::callable
- {
- typedef void result_type;
-
- template<typename If, typename Then, typename Else, typename Args>
- void operator()(If const &if_, Then const &then_, Else const &else_, Args const &args) const
- {
- if(grammar()(if_, 0, args))
- {
- grammar()(then_, 0, args);
- }
- else
- {
- grammar()(else_, 0, args);
- }
- }
- };
+ struct eval_if_else;
 
     // Forward declaration for the mini-lambda expression wrapper
     template<class E>
@@ -156,6 +136,26 @@
>
     {};
 
+ // A callable PolymorphicFunctionObject that evaluates
+ // if/then/else expressions.
+ struct eval_if_else : proto::callable
+ {
+ typedef void result_type;
+
+ template<typename If, typename Then, typename Else, typename Args>
+ void operator()(If const &if_, Then const &then_, Else const &else_, Args const &args) const
+ {
+ if(grammar()(if_, 0, args))
+ {
+ grammar()(then_, 0, args);
+ }
+ else
+ {
+ grammar()(else_, 0, args);
+ }
+ }
+ };
+
     // Define the mini-lambda domain, in which all expressions are
     // wrapped in mini_lambda::expression.
     struct domain

Modified: branches/release/libs/proto/test/Jamfile.v2
==============================================================================
--- branches/release/libs/proto/test/Jamfile.v2 (original)
+++ branches/release/libs/proto/test/Jamfile.v2 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -23,6 +23,7 @@
     :
         [ run calculator.cpp ]
         [ run constrained_ops.cpp ]
+ [ run cpp-next_bug.cpp ]
         [ run deep_copy.cpp ]
         [ run display_expr.cpp ]
         [ run deduce_domain.cpp ]
@@ -38,6 +39,7 @@
         [ run toy_spirit2.cpp ]
         [ run make.cpp ]
         [ run mem_ptr.cpp : : : <toolset>msvc:<cxxflags>/wd4355 ]
+ [ run mpl.cpp ]
         [ run noinvoke.cpp ]
         [ run pack_expansion.cpp ]
         [ run protect.cpp ]

Copied: branches/release/libs/proto/test/cpp-next_bug.cpp (from r80262, /trunk/libs/proto/test/cpp-next_bug.cpp)
==============================================================================
--- /trunk/libs/proto/test/cpp-next_bug.cpp (original)
+++ branches/release/libs/proto/test/cpp-next_bug.cpp 2012-09-01 19:52:42 EDT (Sat, 01 Sep 2012)
@@ -72,7 +72,7 @@
 //
 test_suite* init_unit_test_suite( int argc, char* argv[] )
 {
- test_suite *test = BOOST_TEST_SUITE("test deducing domains from sub-domains");
+ test_suite *test = BOOST_TEST_SUITE("test for a problem reported on the cpp-next.com blog");
 
     test->add(BOOST_TEST_CASE(&test1));
 


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